home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / lang / sofa.lha / sofa / smalleiffel / bin_c / compile_to_c17.c < prev    next >
C/C++ Source or Header  |  2000-03-25  |  106KB  |  4,495 lines

  1. /*
  2. -- ANSI C code generated by :
  3. -- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.76Beta#1)--
  4. -- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
  5. -- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
  6. --                  http://SmallEiffel.loria.fr/                --
  7. */
  8. #include "compile_to_c.h"
  9.  
  10.  
  11. void r121run_feature_has_result(T121* C){
  12. /*[IF*/
  13. if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
  14. {T68 se_tmp0;
  15. r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
  16. }
  17. r66add_position((/*RF2*/((T129*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
  18. r121fatal_error(((T0*)ms115_53215));
  19. }
  20. /*FI]*/
  21. }
  22.  
  23.  
  24. void r121run_feature_match(T121* C,T0* a1){
  25. r121run_feature_has_result(C);
  26. X139match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
  27. }
  28.  
  29.  
  30. T0* r121add_comment(T121* C,T0* a1){
  31. T0* R=NULL;
  32. /*[IF*/
  33. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
  34. R=((T0*)(C));
  35. }
  36. else{
  37. {T229*n=((T229*)malloc(sizeof(*n))/*12*/);
  38. *n=M229;
  39. r229make(n,(T0*)C,a1);
  40. R=((T0*)n);
  41. }
  42. }
  43. /*FI]*/
  44. return R;
  45. }
  46.  
  47.  
  48. void r121with(T121* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
  49. (/*SFN*/C->_target)=a1;
  50. (/*SFN*/C->_feature_name)=a2;
  51. (/*SFN*/C->_arguments)=a3;
  52. (/*SFN*/C->_run_feature)=a4;
  53. r121run_feature_match(C,a5);
  54. }
  55.  
  56.  
  57. void r121mapping_c_target(T121* C,T0* a1){
  58. T0* _actual_type=NULL;
  59. T6 _flag=0;
  60. _flag=r325call_invariant_start(a1);
  61. _actual_type=X52run_type(r121result_type(C));
  62. /*[IF*/
  63. if(X52is_reference(_actual_type)){
  64. /*[IF*/
  65. if(X52is_reference(a1)){
  66. X52mapping_cast(a1);
  67. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  68. T3 b1=((T3)'\50');
  69. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  70. }/*]*/
  71. /*]*/
  72. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
  73. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  74. }/*]*/
  75. /*]*/
  76. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  77. T3 b1=((T3)'\51');
  78. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  79. }/*]*/
  80. /*]*/
  81. }
  82. else{
  83. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
  84. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  85. }/*]*/
  86. /*]*/
  87. }
  88. /*FI]*/
  89. }
  90. else{
  91. /*[IF*/
  92. if(X52is_reference(a1)){
  93. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
  94. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  95. }/*]*/
  96. /*]*/
  97. }
  98. else{
  99. /*[IF*/
  100. if(X52need_c_struct(a1)){
  101. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  102. T3 b1=((T3)'\46');
  103. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  104. }/*]*/
  105. /*]*/
  106. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  107. T3 b1=((T3)'\50');
  108. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  109. }/*]*/
  110. /*]*/
  111. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
  112. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  113. }/*]*/
  114. /*]*/
  115. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  116. T3 b1=((T3)'\51');
  117. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  118. }/*]*/
  119. /*]*/
  120. }
  121. else{
  122. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
  123. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  124. }/*]*/
  125. /*]*/
  126. }
  127. /*FI]*/
  128. }
  129. /*FI]*/
  130. }
  131. /*FI]*/
  132. /*[IF*/
  133. if(_flag){
  134. /*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
  135. T3 b1=((T3)'\51');
  136. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  137. }/*]*/
  138. /*]*/
  139. }
  140. /*FI]*/
  141. }
  142.  
  143.  
  144. void r121afd_check(T121* C){
  145. T0* _running=NULL;
  146. T0* _rc=NULL;
  147. /*[IF*/
  148. if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
  149. _rc=X52run_class(X104result_type((/*RF2*/(C)->_target/*4*/)));
  150. _running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
  151. /*[IF*/
  152. if((_running)==((void*)(NULL))){
  153. }
  154.  else if((r53count(((T53*)_running)))>(1)){
  155. r351update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
  156. }
  157. /*FI]*/
  158. }
  159. /*FI]*/
  160. X104afd_check((/*RF2*/(C)->_target/*4*/));
  161. /*[IF*/
  162. {/*AT*//*SSPRF3*//*X139afd_check*/r139afd_check((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  163. }
  164. /*FI]*/
  165. }
  166.  
  167.  
  168. void r121c_declare_for_old(T121* C){
  169. X104c_declare_for_old((/*RF2*/(C)->_target/*4*/));
  170. /*[IF*/
  171. {/*AT*//*SSPRF3*//*X139c_declare_for_old*/r139c_declare_for_old((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  172. }
  173. /*FI]*/
  174. }
  175.  
  176.  
  177. void r121collect_c_tmp(T121* C){
  178. /*[IF*/
  179. if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
  180. X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
  181. }
  182. /*FI]*/
  183. X104collect_c_tmp((/*RF2*/(C)->_target/*4*/));
  184. /*[IF*/
  185. if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
  186. /*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  187. }
  188. /*FI]*/
  189. }
  190.  
  191.  
  192. T0* r121operator(void){
  193. T0* R=NULL;
  194. R=((T0*)ms15_10680);
  195. return R;
  196. }
  197.  
  198.  
  199. T6 r121use_current(T121* C){
  200. T6 R=0;
  201. /*[IF*/
  202. {/*AT*/R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  203. }
  204. /*FI]*/
  205. /*[IF*/
  206. if(R){
  207. }
  208.  else if(X104is_current((/*RF2*/(C)->_target/*4*/))){
  209. R=X334use_current((/*RF2*/(C)->_run_feature/*16*/));
  210. }
  211. else{
  212. R=X104use_current((/*RF2*/(C)->_target/*4*/));
  213. }
  214. /*FI]*/
  215. return R;
  216. }
  217.  
  218.  
  219. T0* r121runnable_args(T0* a1,T0* a2){
  220. T0* R=NULL;
  221. R=X139to_runnable(a1,a2);
  222. /*[IF*/
  223. if((R)==((void*)(NULL))){
  224. {T68 se_tmp0;
  225. r66add_position((*(se_tmp0=X139start_position(a1),&se_tmp0)));
  226. }
  227. r121fatal_error(((T0*)ms14_12870));
  228. }
  229. /*FI]*/
  230. return R;
  231. }
  232.  
  233.  
  234. T0* r121to_runnable(T121* C,T0* a1){
  235. T0* R=NULL;
  236. T0* _target_type=NULL;
  237. T0* _argument_type=NULL;
  238. T0* _rf=NULL;
  239. T0* _a=NULL;
  240. T0* _t=NULL;
  241. _t=r121runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
  242. _a=r121runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
  243. _target_type=X104result_type(_t);
  244. _argument_type=X104result_type(r121arg1(C));
  245. /*[IF*/
  246. if(X52is_real(_argument_type)){
  247. /*[IF*/
  248. if(X52is_integer(_target_type)){
  249. _t=r341implicit_cast((T341*)(oBC13conversion_handler),_t,_argument_type);
  250. }
  251. /*FI]*/
  252. }
  253.  else if(X52is_double(_argument_type)){
  254. /*[IF*/
  255. if((X52is_integer(_target_type))||(X52is_real(_target_type))){
  256. _t=r341implicit_cast((T341*)(oBC13conversion_handler),_t,_argument_type);
  257. }
  258. /*FI]*/
  259. }
  260. /*FI]*/
  261. _rf=r121run_feature_for(C,_t,a1);
  262. /*[IF*/
  263. if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
  264. (/*SFN*/C->_target)=_t;
  265. (/*SFN*/C->_arguments)=_a;
  266. (/*SFN*/C->_run_feature)=_rf;
  267. r121run_feature_match(C,a1);
  268. R=((T0*)(C));
  269. }
  270.  else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
  271. R=((T0*)(C));
  272. }
  273. else{
  274. {T121*n=((T121*)malloc(sizeof(*n))/*24*/);
  275. *n=M121;
  276. r121with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
  277. R=((T0*)n);
  278. }
  279. }
  280. /*FI]*/
  281. return R;
  282. }
  283.  
  284.  
  285. T2 r121to_integer(T121* C){
  286. T2 R=0;
  287. r121error(/*(IRF4.6start_position*/(/*RF2*/(((T129*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/,((T0*)ms14_45441));
  288. return R;
  289. }
  290.  
  291.  
  292. T6 r121is_static(T121* C){
  293. T6 R=0;
  294. /*[IF*/
  295. if(X52is_boolean(X104result_type((/*RF2*/(C)->_target/*4*/)))){
  296. /*[IF*/
  297. if(X104is_static((/*RF2*/(C)->_target/*4*/))){
  298. /*[IF*/
  299. if((X104static_value((/*RF2*/(C)->_target/*4*/)))==(0)){
  300. R=1;
  301. }
  302. else{
  303. R=X104is_static(r121arg1(C));
  304. /*[IF*/
  305. if(R){
  306. (/*SFN*/C->_static_value_mem)=X104static_value(r121arg1(C));
  307. }
  308. /*FI]*/
  309. }
  310. /*FI]*/
  311. }
  312. /*FI]*/
  313. }
  314. /*FI]*/
  315. return R;
  316. }
  317.  
  318.  
  319. void r121finalize(T121* C){
  320. T0* _rf=NULL;
  321. T0* _rc=NULL;
  322. _rf=(/*RF2*/(C)->_run_feature/*16*/);
  323. _rc=X52run_class(/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)_rf))->_current_type/*8*/));
  324. (/*SFN*/C->_run_feature)=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/)))->_storage/*0*/))[0]/*)*/),_rf);
  325. }
  326.  
  327.  
  328. void r121error(T68 a1,T0* a2){
  329. r66add_position(a1);
  330. /*[IRF3.6append*/{T0* b1=a2;
  331. r7append((T7*)(oBC66explanation),b1);
  332. }/*]*/
  333. r66print_as_error((T66*)(oBC13eh));
  334. }
  335.  
  336.  
  337. T0* r121result_type(T121* C){
  338. T0* R=NULL;
  339. T0* _tla=NULL;
  340. R=X334result_type((/*RF2*/(C)->_run_feature/*16*/));
  341. /*[IF*/
  342. if(X52is_like_current(R)){
  343. R=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
  344. }
  345. else{
  346. _tla=R;
  347. if(NULL!=(_tla)){
  348. switch(((T0*)_tla)->id){
  349. case 257:
  350. break;
  351. default:
  352. _tla=NULL;
  353. }
  354. }/*[IF*/
  355. if((_tla)!=((void*)(NULL))){
  356. R=X52run_type(X104result_type(r121arg1(C)));
  357. }
  358. /*FI]*/
  359. }
  360. /*FI]*/
  361. return R;
  362. }
  363.  
  364.  
  365. T0* r121arg1(T121* C){
  366. T0* R=NULL;
  367. R=/*SSFRF4*//*X139first*//*(IRF4.3first*/(/*RF2*/((T139*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
  368. return R;
  369. }
  370.  
  371.  
  372. T6 r121call_proc_call_stupid_switch(T121* C,T0* a1){
  373. T6 R=0;
  374. /*[IF*/
  375. if(((/*RF2*/(C)->_arguments/*8*/))==((void*)(NULL))){
  376. R=1;
  377. }
  378. else{
  379. R=/*SSFRF4*//*X139stupid_switch*/r139stupid_switch((T139*)((/*RF2*/(C)->_arguments/*8*/)),a1);
  380. }
  381. /*FI]*/
  382. /*[IF*/
  383. if(R){
  384. /*[IF*/
  385. if(X104is_current((/*RF2*/(C)->_target/*4*/))){
  386. /*[IF*/
  387. if(r49same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
  388. R=(X334stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
  389. }
  390. else{
  391. R=0;
  392. }
  393. /*FI]*/
  394. }
  395. else{
  396. R=X104stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
  397. }
  398. /*FI]*/
  399. }
  400. /*FI]*/
  401. return R;
  402. }
  403.  
  404.  
  405. T0* r121run_feature_for(T121* C,T0* a1,T0* a2){
  406. T0* R=NULL;
  407. T0* _bc=NULL;
  408. T0* _rt=NULL;
  409. T0* _rc=NULL;
  410. _rt=X104result_type(a1);
  411. /*[IF*/
  412. if((_rt)!=((void*)(NULL))){
  413. _rc=X52run_class(_rt);
  414. /*[IF*/
  415. if((_rc)!=((void*)(NULL))){
  416. _bc=r50base_class(((T50*)_rc));
  417. R=r51run_feature_for(((T51*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*12*/),a2);
  418. }
  419. /*FI]*/
  420. }
  421. /*FI]*/
  422. /*[IF*/
  423. if((R)==((void*)(NULL))){
  424. r66add_position((/*RF2*/((T129*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
  425. /*[IRF3.6append*/{T0* b1=((T0*)ms116_39025);
  426. r7append((T7*)(oBC66explanation),b1);
  427. }/*]*/
  428. r66print_as_fatal_error((T66*)(oBC13eh));
  429. }
  430. /*FI]*/
  431. return R;
  432. }
  433.  
  434.  
  435. T0* r121static_result_base_class(T121* C){
  436. T0* R=NULL;
  437. T0* _cn=NULL;
  438. T0* _rt=NULL;
  439. T0* _e_feature=NULL;
  440. T0* _bc=NULL;
  441. _bc=X104static_result_base_class((/*RF2*/(C)->_target/*4*/));
  442. /*[IF*/
  443. if((_bc)!=((void*)(NULL))){
  444. _e_feature=r51e_feature(((T51*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
  445. /*[IF*/
  446. if((_e_feature)!=((void*)(NULL))){
  447. _rt=X90result_type(_e_feature);
  448. /*[IF*/
  449. if((_rt)!=((void*)(NULL))){
  450. _cn=X52static_base_class_name(_rt);
  451. /*[IF*/
  452. if((_cn)!=((void*)(NULL))){
  453. R=r61base_class(((T61*)_cn));
  454. }
  455. /*FI]*/
  456. }
  457. /*FI]*/
  458. }
  459. /*FI]*/
  460. }
  461. /*FI]*/
  462. return R;
  463. }
  464.  
  465.  
  466. void r121make(T121* C,T0* a1,T68 a2,T0* a3){
  467. (/*SFN*/C->_target)=a1;
  468. {T129*n=((T129*)malloc(sizeof(*n))/*20*/);
  469. *n=M129;
  470. r129make(n,r121operator(),a2);
  471. (/*SFN*/C->_feature_name)=((T0*)n);
  472. }
  473. {T139*n=((T139*)malloc(sizeof(*n))/*16*/);
  474. *n=M139;
  475. /*[IRF3.3make_1*/((((T139*)(n)))->_first_one)=(a3);
  476. /*]*/
  477. (/*SFN*/C->_arguments)=((T0*)n);
  478. }
  479. }
  480.  
  481.  
  482. void r121fatal_error(T0* a1){
  483. /*[IRF3.6append*/{T0* b1=a1;
  484. r7append((T7*)(oBC66explanation),b1);
  485. }/*]*/
  486. r66print_as_fatal_error((T66*)(oBC13eh));
  487. }
  488.  
  489.  
  490. void r121assertion_check(T121* C,T3 a1){
  491. /*[IF*/
  492. if((a1)==(((T3)'R'))){
  493. X334vape_check_from((/*RF2*/(C)->_run_feature/*16*/),/*(IRF4.6start_position*/(/*RF2*/(((T129*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
  494. }
  495. /*FI]*/
  496. X104assertion_check((/*RF2*/(C)->_target/*4*/),a1);
  497. X104assertion_check(r121arg1(C),a1);
  498. }
  499.  
  500.  
  501. T6 r121stupid_switch(T121* C,T0* a1){
  502. T6 R=0;
  503. R=r121call_proc_call_stupid_switch(C,a1);
  504. /*[IF*/
  505. if(R){
  506. R=!(X52is_native_array(r121result_type(C)));
  507. }
  508. /*FI]*/
  509. return R;
  510. }
  511.  
  512.  
  513. void r251warning(T68 a1,T0* a2){
  514. r66add_position(a1);
  515. /*[IRF3.6append*/{T0* b1=a2;
  516. r7append((T7*)(oBC66explanation),b1);
  517. }/*]*/
  518. r66print_as_warning((T66*)(oBC13eh));
  519. }
  520.  
  521.  
  522. void r251c2c_clear_expanded(T251* C,T2 a1){
  523. X104compile_to_c((/*RF2*/(C)->_writable/*12*/));
  524. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  525. T3 b1=((T3)'\75');
  526. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  527. }/*]*/
  528. /*]*/
  529. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  530. T3 b1=((T3)'M');
  531. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  532. }/*]*/
  533. /*]*/
  534. /*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),a1);
  535. /*]*/
  536. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_138));
  537. /*]*/
  538. }
  539.  
  540.  
  541. void r251c2c_closing(T251* C,T0* a1){
  542. T0* _once_result=NULL;
  543. _once_result=(/*RF2*/(C)->_writable/*12*/);
  544. if(NULL!=(_once_result)){
  545. switch(((T0*)_once_result)->id){
  546. case 145:
  547. break;
  548. default:
  549. _once_result=NULL;
  550. }
  551. }/*[IF*/
  552. if((_once_result)==((void*)(NULL))){
  553. X104compile_to_c((/*RF2*/(C)->_writable/*12*/));
  554. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms248_4213));
  555. /*]*/
  556. }
  557. /*FI]*/
  558. /*[IF*/
  559. if(r325call_invariant_start(a1)){
  560. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  561. T3 b1=((T3)'n');
  562. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  563. }/*]*/
  564. /*]*/
  565. /*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
  566. T3 b1=((T3)'\51');
  567. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  568. }/*]*/
  569. /*]*/
  570. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  571. T3 b1=((T3)'\73');
  572. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  573. }/*]*/
  574. /*]*/
  575. }
  576. /*FI]*/
  577. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  578. T3 b1=((T3)'\175');
  579. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  580. }/*]*/
  581. /*]*/
  582. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  583. T3 b1=((T3)'\n');
  584. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  585. }/*]*/
  586. /*]*/
  587. }
  588.  
  589.  
  590. T0* r251add_comment(T251* C,T0* a1){
  591. T0* R=NULL;
  592. /*[IF*/
  593. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
  594. R=((T0*)(C));
  595. }
  596. /*AF*/else{
  597. {T224*n=((T224*)malloc(sizeof(*n))/*12*/);
  598. *n=M224;
  599. r224make(n,(T0*)C,a1);
  600. R=((T0*)n);
  601. }
  602. }
  603. /*FI]*/
  604. return R;
  605. }
  606.  
  607.  
  608. void r251check_created_type(T251* C,T0* a1){
  609. T0* _rt=NULL;
  610. _rt=X52run_type(a1);
  611. /*[IF*/
  612. if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
  613. }
  614.  else if((/*RF2*/((T51*)(X52base_class(_rt)))->_is_deferred/*16*/)){
  615. r66add_type(_rt,((T0*)ms248_11648));
  616. r251warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms248_30681));
  617. }
  618. /*FI]*/
  619. /*[IF*/
  620. if(X52is_formal_generic(a1)){
  621. r66add_position((/*RF2*/(C)->_start_position/*4*/));
  622. /*[IRF3.6append*/{T0* b1=((T0*)ms248_76570);
  623. r7append((T7*)(oBC66explanation),b1);
  624. }/*]*/
  625. r66add_type(a1,((T0*)ms248_174));
  626. r66print_as_fatal_error((T66*)(oBC13eh));
  627. }
  628. /*FI]*/
  629. r50set_at_run_time((T50*)(X52run_class(_rt)));
  630. }
  631.  
  632.  
  633. void r251afd_check(T251* C){
  634. /*[IF*/
  635. if((r251arg_count(C))>(0)){
  636. /*SSPRF3*//*X139afd_check*/r139afd_check((T139*)(r251run_args(C)));
  637. }
  638. /*FI]*/
  639. }
  640.  
  641.  
  642. void r251collect_c_tmp(T251* C){
  643. T0* _arguments=NULL;
  644. X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
  645. _arguments=r251run_args(C);
  646. /*[IF*/
  647. if((_arguments)!=((void*)(NULL))){
  648. /*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp(((T139*)_arguments));
  649. }
  650. /*FI]*/
  651. }
  652.  
  653.  
  654. void r251check_writable(T251* C,T0* a1){
  655. T0* _w=NULL;
  656. (/*SFN*/C->_current_type)=a1;
  657. _w=X104to_runnable((/*RF2*/(C)->_writable/*12*/),a1);
  658. /*[IF*/
  659. if((_w)==((void*)(NULL))){
  660. {T68 se_tmp0;
  661. r66add_position((*(se_tmp0=X104start_position((/*RF2*/(C)->_writable/*12*/)),&se_tmp0)));
  662. }
  663. r251fatal_error(((T0*)ms248_63756));
  664. }
  665. else{
  666. (/*SFN*/C->_writable)=_w;
  667. }
  668. /*FI]*/
  669. }
  670.  
  671.  
  672. T6 r251use_current(T251* C){
  673. T6 R=0;
  674. /*[IF*/
  675. if((r251run_args(C))!=((void*)(NULL))){
  676. R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)(r251run_args(C)));
  677. }
  678. /*FI]*/
  679. R=(R)||(X104use_current((/*RF2*/(C)->_writable/*12*/)));
  680. return R;
  681. }
  682.  
  683.  
  684. T0* r251to_runnable(T251* C,T0* a1){
  685. T0* R=NULL;
  686. T0* _t=NULL;
  687. /*[IF*/
  688. if(((/*RF2*/(C)->_current_type/*20*/))==((void*)(NULL))){
  689. r251check_writable(C,a1);
  690. _t=X104result_type((/*RF2*/(C)->_writable/*12*/));
  691. r251check_created_type(C,_t);
  692. r251check_creation_clause(C,_t);
  693. R=((T0*)(C));
  694. }
  695. else{
  696. {T251*n=((T251*)malloc(sizeof(*n))/*28*/);
  697. *n=M251;
  698. r251make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_writable/*12*/),(/*RF2*/(C)->_call/*24*/));
  699. R=((T0*)n);
  700. }
  701. R=r251to_runnable(((T251*)R),a1);
  702. }
  703. /*FI]*/
  704. return R;
  705. }
  706.  
  707.  
  708. void r251error(T68 a1,T0* a2){
  709. r66add_position(a1);
  710. /*[IRF3.6append*/{T0* b1=a2;
  711. r7append((T7*)(oBC66explanation),b1);
  712. }/*]*/
  713. r66print_as_error((T66*)(oBC13eh));
  714. }
  715.  
  716.  
  717. void r251c2c_expanded_initializer(T251* C,T0* a1){
  718. T0* _rf3=NULL;
  719. _rf3=X52expanded_initializer(a1);
  720. /*[IF*/
  721. if((_rf3)!=((void*)(NULL))){
  722. r325expanded_writable((T325*)(oBC13cpp),_rf3,(/*RF2*/(C)->_writable/*12*/));
  723. }
  724. /*FI]*/
  725. }
  726.  
  727.  
  728. T0* r251run_args(T251* C){
  729. T0* R=NULL;
  730. R=X152arguments((/*RF2*/(C)->_call/*24*/));
  731. return R;
  732. }
  733.  
  734.  
  735. void r251make(T251* C,T68 a1,T0* a2,T0* a3){
  736. (/*SFN*/C->_start_position)=a1;
  737. (/*SFN*/C->_writable)=a2;
  738. (/*SFN*/C->_call)=a3;
  739. }
  740.  
  741.  
  742. void r251fatal_error(T0* a1){
  743. /*[IRF3.6append*/{T0* b1=a1;
  744. r7append((T7*)(oBC66explanation),b1);
  745. }/*]*/
  746. r66print_as_fatal_error((T66*)(oBC13eh));
  747. }
  748.  
  749.  
  750. void r251compile_to_c(T251* C){
  751. T0* _t=NULL;
  752. _t=X52run_type(X104result_type((/*RF2*/(C)->_writable/*12*/)));
  753. /*[IF*/
  754. if(X52is_reference(_t)){
  755. r251c2c_opening(C,_t);
  756. r325push_new((T325*)(oBC13cpp),(/*RF2*/(C)->_run_feature/*16*/),r251run_args(C));
  757. X334mapping_c((/*RF2*/(C)->_run_feature/*16*/));
  758. r325pop((T325*)(oBC13cpp));
  759. r251c2c_closing(C,_t);
  760. }
  761. else{
  762. r251c2c_clear_expanded(C,X52id(_t));
  763. r251c2c_expanded_initializer(C,_t);
  764. }
  765. /*FI]*/
  766. }
  767.  
  768.  
  769. T2 r251arg_count(T251* C){
  770. T2 R=0;
  771. /*[IF*/
  772. if(((/*RF2*/(C)->_call/*24*/))!=((void*)(NULL))){
  773. R=X152arg_count((/*RF2*/(C)->_call/*24*/));
  774. }
  775. /*FI]*/
  776. return R;
  777. }
  778.  
  779.  
  780. void r251check_creation_clause(T251* C,T0* a1){
  781. T0* _args=NULL;
  782. T0* _top=NULL;
  783. T0* _bottom=NULL;
  784. T0* _fn=NULL;
  785. T0* _ct=NULL;
  786. _fn=/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
  787. {T68 se_tmp0;
  788. _top=(/*RF2*/((*(se_tmp0=X82start_position(_fn),&se_tmp0)))._base_class/*0*/);
  789. }
  790. _bottom=X52base_class(a1);
  791. /*[IF*/
  792. if(X52is_like_current(a1)){
  793. _fn=r51new_name_of(((T51*)_bottom),_top,_fn);
  794. /*[IF*/
  795. if((_fn)==((void*)(NULL))){
  796. _fn=/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
  797. r66feature_not_found(_fn);
  798. /*[IRF3.6append*/{T0* b1=((T0*)ms252_22600);
  799. r7append((T7*)(oBC66explanation),b1);
  800. }/*]*/
  801. /*[IRF3.6append*/{T0* b1=X52run_time_mark(a1);
  802. r7append((T7*)(oBC66explanation),b1);
  803. }/*]*/
  804. r251fatal_error(((T0*)ms14_160));
  805. }
  806. /*FI]*/
  807. }
  808. /*FI]*/
  809. (/*SFN*/C->_run_feature)=r50get_feature((T50*)(X52run_class(a1)),_fn);
  810. /*[IF*/
  811. if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
  812. r251cp_not_found(C,_fn);
  813. }
  814. /*FI]*/
  815. /*[IF*/
  816. if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
  817. }
  818.  else if(!(X52has_creation(a1,_fn))){
  819. {T68 se_tmp0;
  820. r66add_position((*(se_tmp0=X82start_position(/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
  821. }
  822. {T68 se_tmp0;
  823. r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
  824. }
  825. /*[IRF3.6append*/{T0* b1=X82to_string(_fn);
  826. r7append((T7*)(oBC66explanation),b1);
  827. }/*]*/
  828. /*[IRF3.6append*/{T0* b1=((T0*)ms252_45376);
  829. r7append((T7*)(oBC66explanation),b1);
  830. }/*]*/
  831. r66add_type(a1,((T0*)ms14_46));
  832. r66print_as_fatal_error((T66*)(oBC13eh));
  833. }
  834. /*FI]*/
  835. r50add_client((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)))),X52run_class((/*RF2*/(C)->_current_type/*20*/)));
  836. /*[IF*/
  837. if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))!=((void*)(NULL))){
  838. {T68 se_tmp0;
  839. r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
  840. }
  841. {T68 se_tmp0;
  842. r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
  843. }
  844. r251fatal_error(((T0*)ms252_66627));
  845. }
  846. /*FI]*/
  847. /*[IF*/
  848. if(((r251arg_count(C))==(0))&&((X334arguments((/*RF2*/(C)->_run_feature/*16*/)))!=((void*)(NULL)))){
  849. {T68 se_tmp0;
  850. r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
  851. }
  852. r66add_position((/*RF2*/(C)->_start_position/*4*/));
  853. r251fatal_error(((T0*)ms252_63264));
  854. }
  855. /*FI]*/
  856. /*[IF*/
  857. if((r251arg_count(C))>(0)){
  858. _ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
  859. _args=X139to_runnable(X152arguments((/*RF2*/(C)->_call/*24*/)),_ct);
  860. /*[IF*/
  861. if((_args)==((void*)(NULL))){
  862. {T68 se_tmp0;
  863. r251error((*(se_tmp0=X139start_position(X152arguments((/*RF2*/(C)->_call/*24*/))),&se_tmp0)),((T0*)ms14_14504));
  864. }
  865. }
  866. else{
  867. X139match_with(_args,(/*RF2*/(C)->_run_feature/*16*/),_ct);
  868. }
  869. /*FI]*/
  870. }
  871. /*FI]*/
  872. (/*SFN*/C->_call)=X152make_runnable((/*RF2*/(C)->_call/*24*/),(/*RF2*/(C)->_writable/*12*/),_args,(/*RF2*/(C)->_run_feature/*16*/));
  873. }
  874.  
  875.  
  876. T6 r251stupid_switch(T251* C,T0* a1){
  877. T6 R=0;
  878. T0* _t=NULL;
  879. /*[IF*/
  880. /*AF*//*AE*/
  881. _t=X104result_type((/*RF2*/(C)->_writable/*12*/));
  882. /*FI]*/
  883. /*[IF*/
  884. if(X52is_anchored(_t)){
  885. }
  886.  else if(X52is_generic(_t)){
  887. }
  888. else{
  889. /*[IF*/
  890. if(((/*RF2*/(C)->_call/*24*/))==((void*)(NULL))){
  891. R=X104stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
  892. }
  893. else{
  894. R=X152stupid_switch((/*RF2*/(C)->_call/*24*/),a1);
  895. }
  896. /*FI]*/
  897. }
  898. /*FI]*/
  899. return R;
  900. }
  901.  
  902.  
  903. void r251c2c_opening(T251* C,T0* a1){
  904. T0* _once_result=NULL;
  905. T0* _rc=NULL;
  906. _rc=X52run_class(a1);
  907. r325se_trace_ins((T325*)(oBC13cpp),(/*RF2*/(C)->_start_position/*4*/));
  908. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  909. T3 b1=((T3)'\173');
  910. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  911. }/*]*/
  912. /*]*/
  913. r344allocation((T344*)(oBC13gc_handler),_rc);
  914. r325expanded_attributes((T325*)(oBC13cpp),a1);
  915. _once_result=(/*RF2*/(C)->_writable/*12*/);
  916. if(NULL!=(_once_result)){
  917. switch(((T0*)_once_result)->id){
  918. case 145:
  919. break;
  920. default:
  921. _once_result=NULL;
  922. }
  923. }/*[IF*/
  924. if((_once_result)!=((void*)(NULL))){
  925. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),r145c_variable_name(((T145*)_once_result)));
  926. /*]*/
  927. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms248_4213a));
  928. /*]*/
  929. }
  930. /*FI]*/
  931. }
  932.  
  933.  
  934. T6 r251is_pre_computable(T251* C){
  935. T6 R=0;
  936. T0* _rfctbcn=NULL;
  937. T0* _rfn=NULL;
  938. T0* _rfct=NULL;
  939. /*[IF*/
  940. if(X104is_result((/*RF2*/(C)->_writable/*12*/))){
  941. /*[IF*/
  942. if((r251run_args(C))==((void*)(NULL))){
  943. R=1;
  944. }
  945. else{
  946. R=/*SSFRF4*//*X139is_pre_computable*/r139is_pre_computable((T139*)(r251run_args(C)));
  947. }
  948. /*FI]*/
  949. /*[IF*/
  950. if(R){
  951. /*[IF*/
  952. if(X334is_pre_computable((/*RF2*/(C)->_run_feature/*16*/))){
  953. }
  954. else{
  955. _rfct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
  956. _rfctbcn=(/*RF2*/((T61*)((/*RF2*/((T51*)(X52base_class(_rfct)))->_name/*18*/)))->_to_string/*8*/);
  957. _rfn=X82to_string(/*SSWARF2*//*X334name*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_name/*12*/));
  958. /*[IF*/
  959. if((((T0*)ms15_1656))==((void*)(_rfn))){
  960. /*[IF*/
  961. if((((T0*)ms15_1915))==((void*)(_rfctbcn))){
  962. }
  963.  else if((((T0*)ms15_14817))==((void*)(_rfctbcn))){
  964. }
  965.  else if((((T0*)ms15_4956))==((void*)(_rfctbcn))){
  966. }
  967.  else if((((T0*)ms15_12550))==((void*)(_rfctbcn))){
  968. }
  969.  else if((((T0*)ms15_16692))==((void*)(_rfctbcn))){
  970. }
  971.  else if((((T0*)ms15_19124))==((void*)(_rfctbcn))){
  972. }
  973. else{
  974. R=0;
  975. }
  976. /*FI]*/
  977. }
  978.  else if((((T0*)ms15_2600))==((void*)(_rfn))){
  979. /*[IF*/
  980. if((((T0*)ms15_4956))==((void*)(_rfctbcn))){
  981. }
  982. else{
  983. R=0;
  984. }
  985. /*FI]*/
  986. }
  987.  else if((((T0*)ms15_27456))==((void*)(_rfn))){
  988. /*[IF*/
  989. if((((T0*)ms15_1915))==((void*)(_rfctbcn))){
  990. }
  991.  else if((((T0*)ms15_14817))==((void*)(_rfctbcn))){
  992. }
  993.  else if((((T0*)ms15_12550))==((void*)(_rfctbcn))){
  994. }
  995. else{
  996. R=0;
  997. }
  998. /*FI]*/
  999. }
  1000. else{
  1001. R=0;
  1002. }
  1003. /*FI]*/
  1004. }
  1005. /*FI]*/
  1006. }
  1007. /*FI]*/
  1008. }
  1009. /*FI]*/
  1010. return R;
  1011. }
  1012.  
  1013.  
  1014. void r251cp_not_found(T251* C,T0* a1){
  1015. {T68 se_tmp0;
  1016. r66add_position((*(se_tmp0=X82start_position(/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
  1017. }
  1018. {T68 se_tmp0;
  1019. r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
  1020. }
  1021. r251fatal_error(((T0*)ms252_53041));
  1022. }
  1023.  
  1024.  
  1025. T0* r315try_to_undefine_aux(T315* C,T0* a1,T0* a2){
  1026. T0* R=NULL;
  1027. {T68 se_tmp0;
  1028. r66add_position((*(se_tmp0=r315start_position(C),&se_tmp0)));
  1029. }
  1030. {T68 se_tmp0;
  1031. r315error((*(se_tmp0=X82start_position(a1),&se_tmp0)),((T0*)ms200_98784));
  1032. }
  1033. r51fatal_undefine(((T51*)a2),a1);
  1034. return R;
  1035. }
  1036.  
  1037.  
  1038. T0* r315try_to_undefine(T315* C,T0* a1,T0* a2){
  1039. T0* R=NULL;
  1040. T0* _fn2=NULL;
  1041. {T68 se_tmp0;
  1042. r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
  1043. }
  1044. _fn2=r83feature_name((T83*)((/*RF2*/(C)->_names/*8*/)),X82to_key(a1));
  1045. /*[IF*/
  1046. if((_fn2)!=((void*)(NULL))){
  1047. X82undefine_in(_fn2,a2);
  1048. }
  1049. /*FI]*/
  1050. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
  1051. /*]*/
  1052. /*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
  1053. /*]*/
  1054. /*]*/
  1055. R=r315try_to_undefine_aux(C,a1,a2);
  1056. /*[IF*/
  1057. if((R)!=((void*)(NULL))){
  1058. X284set_clients(R,(/*RF2*/(C)->_clients/*16*/));
  1059. r315merge_header_comments(C,R);
  1060. }
  1061. else{
  1062. r51fatal_undefine(((T51*)a2),a1);
  1063. }
  1064. /*FI]*/
  1065. return R;
  1066. }
  1067.  
  1068.  
  1069. void r315check_obsolete(T315* C,T68 a1){
  1070. /*[IF*/
  1071. /*AF*//*AE*/
  1072. /*FI]*/
  1073. }
  1074.  
  1075.  
  1076. T0* r315to_run_feature(T315* C,T0* a1,T0* a2){
  1077. T0* R=NULL;
  1078. {T345*n=((T345*)malloc(sizeof(*n))/*32*/);
  1079. *n=M345;
  1080. r345make(n,a1,a2,(T0*)C);
  1081. R=((T0*)n);
  1082. }
  1083. return R;
  1084. }
  1085.  
  1086.  
  1087. void r315error(T68 a1,T0* a2){
  1088. r66add_position(a1);
  1089. /*[IRF3.6append*/{T0* b1=a2;
  1090. r7append((T7*)(oBC66explanation),b1);
  1091. }/*]*/
  1092. r66print_as_error((T66*)(oBC13eh));
  1093. }
  1094.  
  1095.  
  1096. T6 r315is_not_mergeable_with(T315* C,T0* a1){
  1097. T6 R=0;
  1098. /*[IF*/
  1099. if(((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL))){
  1100. R=(X90result_type(a1))!=((void*)(NULL));
  1101. }
  1102. else{
  1103. R=(X90result_type(a1))==((void*)(NULL));
  1104. }
  1105. /*FI]*/
  1106. /*[IF*/
  1107. if(R){
  1108. /*[IRF3.6append*/{T0* b1=((T0*)ms90_64152);
  1109. r7append((T7*)(oBC66explanation),b1);
  1110. }/*]*/
  1111. }
  1112. else{
  1113. /*[IF*/
  1114. {/*AT*/R=(X90arguments(a1))!=((void*)(NULL));
  1115. }
  1116. /*FI]*/
  1117. /*[IF*/
  1118. if(R){
  1119. /*[IRF3.6append*/{T0* b1=((T0*)ms90_82612);
  1120. r7append((T7*)(oBC66explanation),b1);
  1121. }/*]*/
  1122. }
  1123.  else {/*AT*/}
  1124. /*FI]*/
  1125. }
  1126. /*FI]*/
  1127. r315merge_header_comments(C,a1);
  1128. return R;
  1129. }
  1130.  
  1131.  
  1132. void r315make(T315* C,T0* a1,T0* a2){
  1133. /*[IRF3.3make_e_feature*/((((T315*)(C)))->_names)=(a1);
  1134. /*]*/
  1135. (/*SFN*/C->_result_type)=a2;
  1136. }
  1137.  
  1138.  
  1139. void r315add_into(T315* C,T0* a1){
  1140. T0* _fn=NULL;
  1141. T2 _i=0;
  1142. {T68 se_tmp0;
  1143. (/*SFN*/C->_base_class)=(/*RF2*/((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),1)),&se_tmp0)))._base_class/*0*/);
  1144. }
  1145. _i=1;
  1146. while (!((_i)>(r83count((T83*)((/*RF2*/(C)->_names/*8*/))))))
  1147. {
  1148. _fn=r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i);
  1149. /*[IF*/
  1150. if(r91has(((T91*)a1),X82to_key(_fn))){
  1151. _fn=/*SSFRF4*//*X90first_name*//*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/((T198*)(r91at(((T91*)a1),X82to_key(_fn))))->_names/*8*/))))->_first/*0*/)/*)*/;
  1152. {T68 se_tmp0;
  1153. r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
  1154. }
  1155. {T68 se_tmp0;
  1156. r66add_position((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i)),&se_tmp0)));
  1157. }
  1158. /*[IRF3.6append*/{T0* b1=((T0*)ms90_41470);
  1159. r7append((T7*)(oBC66explanation),b1);
  1160. }/*]*/
  1161. /*[IRF3.6append*/{T0* b1=X82to_string(_fn);
  1162. r7append((T7*)(oBC66explanation),b1);
  1163. }/*]*/
  1164. /*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
  1165. r7append((T7*)(oBC66explanation),b1);
  1166. }/*]*/
  1167. r66print_as_error((T66*)(oBC13eh));
  1168. }
  1169. else{
  1170. r91put(((T91*)a1),(T0*)C,X82to_key(_fn));
  1171. }
  1172. /*FI]*/
  1173. _i=(_i)+(1);
  1174. }
  1175. }
  1176.  
  1177.  
  1178. T6 r315can_hide(T315* C,T0* a1,T0* a2){
  1179. T6 R=0;
  1180. /*[IF*/
  1181. if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(X90result_type(a1)))){
  1182. /*[IF*/
  1183. if((((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL)))||((X90result_type(a1))==((void*)(NULL)))){
  1184. {T68 se_tmp0;
  1185. r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
  1186. }
  1187. {T68 se_tmp0;
  1188. r315error((*(se_tmp0=r315start_position(C),&se_tmp0)),((T0*)ms90_64152));
  1189. }
  1190. }
  1191. /*FI]*/
  1192. }
  1193. /*FI]*/
  1194. /*[IF*/
  1195. if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X90arguments(a1)))){
  1196. /*[IF*/
  1197. {/*AT*/{T68 se_tmp0;
  1198. r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
  1199. }
  1200. {T68 se_tmp0;
  1201. r315error((*(se_tmp0=r315start_position(C),&se_tmp0)),((T0*)ms90_82612));
  1202. }
  1203. }
  1204. /*FI]*/
  1205. }
  1206. /*FI]*/
  1207. /*[IF*/
  1208. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  1209. /*[IF*/
  1210. if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(NULL))){
  1211. /*[IF*/
  1212. if(!(X52is_a_in((/*RF2*/(C)->_result_type/*20*/),X90result_type(a1),a2))){
  1213. /*[IRF3.6append*/{T0* b1=((T0*)ms90_51136);
  1214. r7append((T7*)(oBC66explanation),b1);
  1215. }/*]*/
  1216. /*[IRF3.6append*/{T0* b1=X52run_time_mark((/*RF2*/(((T50*)a2))->_current_type/*0*/));
  1217. r7append((T7*)(oBC66explanation),b1);
  1218. }/*]*/
  1219. /*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
  1220. r7append((T7*)(oBC66explanation),b1);
  1221. }/*]*/
  1222. r66print_as_error((T66*)(oBC13eh));
  1223. }
  1224. /*FI]*/
  1225. }
  1226. /*FI]*/
  1227. }
  1228. /*FI]*/
  1229. /*[IF*/
  1230. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  1231. /*[IF*/
  1232. /*AF*//*AE*/
  1233. /*FI]*/
  1234. }
  1235. /*FI]*/
  1236. R=(/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0);
  1237. /*[IF*/
  1238. if(R){
  1239. r315merge_header_comments(C,a1);
  1240. }
  1241. /*FI]*/
  1242. return R;
  1243. }
  1244.  
  1245.  
  1246. void r315merge_header_comments(T315* C,T0* a1){
  1247. /*[IF*/
  1248. if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
  1249. /*[IF*/
  1250. if(((/*RF2*/(C)->_header_comment/*12*/))==((void*)(NULL))){
  1251. (/*SFN*/C->_header_comment)=/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/);
  1252. }
  1253.  else if((/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/))==((void*)(NULL))){
  1254. X90set_header_comment(a1,(/*RF2*/(C)->_header_comment/*12*/));
  1255. }
  1256. /*FI]*/
  1257. }
  1258. /*FI]*/
  1259. }
  1260.  
  1261.  
  1262. T68 r315start_position(T315* C){
  1263. T68 R={NULL,0};
  1264. {T68 se_tmp0;
  1265. R=(*(se_tmp0=X82start_position(/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
  1266. }
  1267. return R;
  1268. }
  1269.  
  1270.  
  1271. T0* r290try_to_undefine_aux(T290* C,T0* a1,T0* a2){
  1272. T0* R=NULL;
  1273. {T285*n=((T285*)malloc(sizeof(*n))/*40*/);
  1274. *n=M285;
  1275. r285from_effective(n,a1,(/*RF2*/(C)->_arguments/*20*/),(/*RF2*/(C)->_require_assertion/*28*/),(/*RF2*/(C)->_ensure_assertion/*32*/),a2);
  1276. R=((T0*)n);
  1277. }
  1278. return R;
  1279. }
  1280.  
  1281.  
  1282. T0* r290try_to_undefine(T290* C,T0* a1,T0* a2){
  1283. T0* R=NULL;
  1284. T0* _fn2=NULL;
  1285. {T68 se_tmp0;
  1286. r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
  1287. }
  1288. _fn2=r83feature_name((T83*)((/*RF2*/(C)->_names/*8*/)),X82to_key(a1));
  1289. /*[IF*/
  1290. if((_fn2)!=((void*)(NULL))){
  1291. X82undefine_in(_fn2,a2);
  1292. }
  1293. /*FI]*/
  1294. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
  1295. /*]*/
  1296. /*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
  1297. /*]*/
  1298. /*]*/
  1299. R=r290try_to_undefine_aux(C,a1,a2);
  1300. /*[IF*/
  1301. if((R)!=((void*)(NULL))){
  1302. X284set_clients(R,(/*RF2*/(C)->_clients/*16*/));
  1303. r290merge_header_comments(C,R);
  1304. }
  1305. else{
  1306. r51fatal_undefine(((T51*)a2),a1);
  1307. }
  1308. /*FI]*/
  1309. return R;
  1310. }
  1311.  
  1312.  
  1313. void r290check_obsolete(T290* C,T68 a1){
  1314. /*[IF*/
  1315. if(((/*RF2*/(C)->_obsolete_mark/*24*/))!=((void*)(NULL))){
  1316. /*[IF*/
  1317. if(!((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/))){
  1318. r66add_position(a1);
  1319. /*[IRF3.6append*/{T0* b1=((T0*)ms90_19170);
  1320. r7append((T7*)(oBC66explanation),b1);
  1321. }/*]*/
  1322. /*[IRF3.6append*/{T0* b1=(/*RF2*/((T161*)((/*RF2*/(C)->_obsolete_mark/*24*/)))->_to_string/*12*/);
  1323. r7append((T7*)(oBC66explanation),b1);
  1324. }/*]*/
  1325. {T68 se_tmp0;
  1326. r66add_position((*(se_tmp0=r290start_position(C),&se_tmp0)));
  1327. }
  1328. r66print_as_warning((T66*)(oBC13eh));
  1329. }
  1330. /*FI]*/
  1331. }
  1332. /*FI]*/
  1333. }
  1334.  
  1335.  
  1336. T6 r290use_current(T290* C){
  1337. T6 R=0;
  1338. R=X288use_current((/*RF2*/(C)->_native/*40*/),(T0*)C);
  1339. return R;
  1340. }
  1341.  
  1342.  
  1343. T0* r290to_run_feature(T290* C,T0* a1,T0* a2){
  1344. T0* R=NULL;
  1345. {T337*n=((T337*)malloc(sizeof(*n))/*40*/);
  1346. *n=M337;
  1347. r337make(n,a1,a2,(T0*)C);
  1348. R=((T0*)n);
  1349. }
  1350. return R;
  1351. }
  1352.  
  1353.  
  1354. void r290error(T68 a1,T0* a2){
  1355. r66add_position(a1);
  1356. /*[IRF3.6append*/{T0* b1=a2;
  1357. r7append((T7*)(oBC66explanation),b1);
  1358. }/*]*/
  1359. r66print_as_error((T66*)(oBC13eh));
  1360. }
  1361.  
  1362.  
  1363. T0* r290external_c_name(T290* C){
  1364. T0* R=NULL;
  1365. /*[IF*/
  1366. if(((/*RF2*/(C)->_alias_string/*44*/))==((void*)(NULL))){
  1367. R=X82to_string(/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/);
  1368. }
  1369. else{
  1370. R=(/*RF2*/(C)->_alias_string/*44*/);
  1371. }
  1372. /*FI]*/
  1373. return R;
  1374. }
  1375.  
  1376.  
  1377. T6 r290is_not_mergeable_with(T290* C,T0* a1){
  1378. T6 R=0;
  1379. /*[IF*/
  1380. {/*AT*/R=(X90result_type(a1))!=((void*)(NULL));
  1381. }
  1382. /*FI]*/
  1383. /*[IF*/
  1384. if(R){
  1385. /*[IRF3.6append*/{T0* b1=((T0*)ms90_64152);
  1386. r7append((T7*)(oBC66explanation),b1);
  1387. }/*]*/
  1388. }
  1389. else{
  1390. /*[IF*/
  1391. if(((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL))){
  1392. R=(X90arguments(a1))!=((void*)(NULL));
  1393. }
  1394. else{
  1395. R=(X90arguments(a1))==((void*)(NULL));
  1396. }
  1397. /*FI]*/
  1398. /*[IF*/
  1399. if(R){
  1400. /*[IRF3.6append*/{T0* b1=((T0*)ms90_82612);
  1401. r7append((T7*)(oBC66explanation),b1);
  1402. }/*]*/
  1403. }
  1404.  else if(((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL))){
  1405. }
  1406.  else if((/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/((T178*)((/*RF2*/(C)->_arguments/*20*/)))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)!=(/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/((T178*)(X90arguments(a1)))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)){
  1407. /*[IRF3.6append*/{T0* b1=((T0*)ms90_66660);
  1408. r7append((T7*)(oBC66explanation),b1);
  1409. }/*]*/
  1410. R=1;
  1411. }
  1412. /*FI]*/
  1413. }
  1414. /*FI]*/
  1415. r290merge_header_comments(C,a1);
  1416. return R;
  1417. }
  1418.  
  1419.  
  1420. void r290set_header_comment(T290* C,T0* a1){
  1421. /*[IF*/
  1422. if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)>(1))){
  1423. (/*SFN*/C->_end_comment)=a1;
  1424. }
  1425. /*FI]*/
  1426. }
  1427.  
  1428.  
  1429. void r290set_rescue_compound(T290* C,T0* a1){
  1430. /*[IF*/
  1431. if((a1)!=((void*)(NULL))){
  1432. {T68 se_tmp0;
  1433. r66add_position((*(se_tmp0=r215start_position(((T215*)a1)),&se_tmp0)));
  1434. }
  1435. }
  1436. else{
  1437. {T68 se_tmp0;
  1438. r66add_position((*(se_tmp0=r290start_position(C),&se_tmp0)));
  1439. }
  1440. }
  1441. /*FI]*/
  1442. /*[IRF3.6append*/{T0* b1=((T0*)ms289_126054);
  1443. r7append((T7*)(oBC66explanation),b1);
  1444. }/*]*/
  1445. r66print_as_fatal_error((T66*)(oBC13eh));
  1446. }
  1447.  
  1448.  
  1449. void r290make_routine(T290* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
  1450. /*[IRF3.3make_e_feature*/((((T290*)(C)))->_names)=(a1);
  1451. /*]*/
  1452. (/*SFN*/C->_header_comment)=a4;
  1453. (/*SFN*/C->_arguments)=a2;
  1454. (/*SFN*/C->_obsolete_mark)=a3;
  1455. (/*SFN*/C->_require_assertion)=a5;
  1456. }
  1457.  
  1458.  
  1459. void r290make(T290* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
  1460. r290make_routine(C,a1,a2,a3,a4,a5);
  1461. r290make_external_routine(C,a6,a7);
  1462. }
  1463.  
  1464.  
  1465. void r290make_external_routine(T290* C,T0* a1,T0* a2){
  1466. (/*SFN*/C->_native)=a1;
  1467. (/*SFN*/C->_alias_string)=a2;
  1468. }
  1469.  
  1470.  
  1471. void r290add_into(T290* C,T0* a1){
  1472. T0* _fn=NULL;
  1473. T2 _i=0;
  1474. {T68 se_tmp0;
  1475. (/*SFN*/C->_base_class)=(/*RF2*/((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),1)),&se_tmp0)))._base_class/*0*/);
  1476. }
  1477. _i=1;
  1478. while (!((_i)>(r83count((T83*)((/*RF2*/(C)->_names/*8*/))))))
  1479. {
  1480. _fn=r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i);
  1481. /*[IF*/
  1482. if(r91has(((T91*)a1),X82to_key(_fn))){
  1483. _fn=/*SSFRF4*//*X90first_name*//*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/((T198*)(r91at(((T91*)a1),X82to_key(_fn))))->_names/*8*/))))->_first/*0*/)/*)*/;
  1484. {T68 se_tmp0;
  1485. r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
  1486. }
  1487. {T68 se_tmp0;
  1488. r66add_position((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i)),&se_tmp0)));
  1489. }
  1490. /*[IRF3.6append*/{T0* b1=((T0*)ms90_41470);
  1491. r7append((T7*)(oBC66explanation),b1);
  1492. }/*]*/
  1493. /*[IRF3.6append*/{T0* b1=X82to_string(_fn);
  1494. r7append((T7*)(oBC66explanation),b1);
  1495. }/*]*/
  1496. /*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
  1497. r7append((T7*)(oBC66explanation),b1);
  1498. }/*]*/
  1499. r66print_as_error((T66*)(oBC13eh));
  1500. }
  1501. else{
  1502. r91put(((T91*)a1),(T0*)C,X82to_key(_fn));
  1503. }
  1504. /*FI]*/
  1505. _i=(_i)+(1);
  1506. }
  1507. }
  1508.  
  1509.  
  1510. T6 r290can_hide(T290* C,T0* a1,T0* a2){
  1511. T6 R=0;
  1512. /*[IF*/
  1513. if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X90result_type(a1)))){
  1514. /*[IF*/
  1515. {/*AT*/{T68 se_tmp0;
  1516. r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
  1517. }
  1518. {T68 se_tmp0;
  1519. r290error((*(se_tmp0=r290start_position(C),&se_tmp0)),((T0*)ms90_64152));
  1520. }
  1521. }
  1522. /*FI]*/
  1523. }
  1524. /*FI]*/
  1525. /*[IF*/
  1526. if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(X90arguments(a1)))){
  1527. /*[IF*/
  1528. if((((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL)))||((X90arguments(a1))==((void*)(NULL)))){
  1529. {T68 se_tmp0;
  1530. r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
  1531. }
  1532. {T68 se_tmp0;
  1533. r290error((*(se_tmp0=r290start_position(C),&se_tmp0)),((T0*)ms90_82612));
  1534. }
  1535. }
  1536.  else if((/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/((T178*)((/*RF2*/(C)->_arguments/*20*/)))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)!=(/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/((T178*)(X90arguments(a1)))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)){
  1537. {T68 se_tmp0;
  1538. r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
  1539. }
  1540. {T68 se_tmp0;
  1541. r290error((*(se_tmp0=r290start_position(C),&se_tmp0)),((T0*)ms90_66660));
  1542. }
  1543. }
  1544. /*FI]*/
  1545. }
  1546. /*FI]*/
  1547. /*[IF*/
  1548. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  1549. /*[IF*/
  1550. /*AF*//*AE*/
  1551. /*FI]*/
  1552. }
  1553. /*FI]*/
  1554. /*[IF*/
  1555. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  1556. /*[IF*/
  1557. if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(NULL))){
  1558. /*[IF*/
  1559. if(!(r178is_a_in((T178*)((/*RF2*/(C)->_arguments/*20*/)),X90arguments(a1),a2))){
  1560. {T68 se_tmp0;
  1561. r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
  1562. }
  1563. {T68 se_tmp0;
  1564. r66add_position((*(se_tmp0=r290start_position(C),&se_tmp0)));
  1565. }
  1566. /*[IRF3.6append*/{T0* b1=((T0*)ms90_51136);
  1567. r7append((T7*)(oBC66explanation),b1);
  1568. }/*]*/
  1569. /*[IRF3.6append*/{T0* b1=X52run_time_mark((/*RF2*/(((T50*)a2))->_current_type/*0*/));
  1570. r7append((T7*)(oBC66explanation),b1);
  1571. }/*]*/
  1572. /*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
  1573. r7append((T7*)(oBC66explanation),b1);
  1574. }/*]*/
  1575. r66print_as_error((T66*)(oBC13eh));
  1576. }
  1577. /*FI]*/
  1578. }
  1579. /*FI]*/
  1580. }
  1581. /*FI]*/
  1582. R=(/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0);
  1583. /*[IF*/
  1584. if(R){
  1585. r290merge_header_comments(C,a1);
  1586. }
  1587. /*FI]*/
  1588. return R;
  1589. }
  1590.  
  1591.  
  1592. void r290merge_header_comments(T290* C,T0* a1){
  1593. /*[IF*/
  1594. if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
  1595. /*[IF*/
  1596. if(((/*RF2*/(C)->_header_comment/*12*/))==((void*)(NULL))){
  1597. (/*SFN*/C->_header_comment)=/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/);
  1598. }
  1599.  else if((/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/))==((void*)(NULL))){
  1600. X90set_header_comment(a1,(/*RF2*/(C)->_header_comment/*12*/));
  1601. }
  1602. /*FI]*/
  1603. }
  1604. /*FI]*/
  1605. }
  1606.  
  1607.  
  1608. T68 r290start_position(T290* C){
  1609. T68 R={NULL,0};
  1610. {T68 se_tmp0;
  1611. R=(*(se_tmp0=X82start_position(/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
  1612. }
  1613. return R;
  1614. }
  1615.  
  1616.  
  1617. T0* r147add_comment(T147* C,T0* a1){
  1618. T0* R=NULL;
  1619. /*[IF*/
  1620. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
  1621. R=((T0*)(C));
  1622. }
  1623. else{
  1624. {T229*n=((T229*)malloc(sizeof(*n))/*12*/);
  1625. *n=M229;
  1626. r229make(n,(T0*)C,a1);
  1627. R=((T0*)n);
  1628. }
  1629. }
  1630. /*FI]*/
  1631. return R;
  1632. }
  1633.  
  1634.  
  1635. T2 r147to_integer(T147* C){
  1636. T2 R=0;
  1637. r147error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms14_45441));
  1638. return R;
  1639. }
  1640.  
  1641.  
  1642. void r147error(T68 a1,T0* a2){
  1643. r66add_position(a1);
  1644. /*[IRF3.6append*/{T0* b1=a2;
  1645. r7append((T7*)(oBC66explanation),b1);
  1646. }/*]*/
  1647. r66print_as_error((T66*)(oBC13eh));
  1648. }
  1649. T0*oBC147result_type=NULL;
  1650. int fBC147result_type=0;
  1651.  
  1652.  
  1653. T0* r147result_type(void){
  1654. if(fBC147result_type==0){fBC147result_type=1;{
  1655. T68 _unknown_position={NULL,0};
  1656. {T268*n=((T268*)malloc(sizeof(*n))/*8*/);
  1657. *n=M268;
  1658. oBC147result_type=((T0*)n);
  1659. r268make(n,_unknown_position);
  1660. }
  1661. }}
  1662. return oBC147result_type;
  1663. }
  1664.  
  1665.  
  1666. void r253warning(T68 a1,T0* a2){
  1667. r66add_position(a1);
  1668. /*[IRF3.6append*/{T0* b1=a2;
  1669. r7append((T7*)(oBC66explanation),b1);
  1670. }/*]*/
  1671. r66print_as_warning((T66*)(oBC13eh));
  1672. }
  1673.  
  1674.  
  1675. void r253c2c_clear_expanded(T253* C,T2 a1){
  1676. X104compile_to_c((/*RF2*/(C)->_writable/*12*/));
  1677. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  1678. T3 b1=((T3)'\75');
  1679. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  1680. }/*]*/
  1681. /*]*/
  1682. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  1683. T3 b1=((T3)'M');
  1684. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  1685. }/*]*/
  1686. /*]*/
  1687. /*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),a1);
  1688. /*]*/
  1689. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_138));
  1690. /*]*/
  1691. }
  1692.  
  1693.  
  1694. void r253c2c_closing(T253* C,T0* a1){
  1695. T0* _once_result=NULL;
  1696. _once_result=(/*RF2*/(C)->_writable/*12*/);
  1697. if(NULL!=(_once_result)){
  1698. switch(((T0*)_once_result)->id){
  1699. case 145:
  1700. break;
  1701. default:
  1702. _once_result=NULL;
  1703. }
  1704. }/*[IF*/
  1705. if((_once_result)==((void*)(NULL))){
  1706. X104compile_to_c((/*RF2*/(C)->_writable/*12*/));
  1707. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms248_4213));
  1708. /*]*/
  1709. }
  1710. /*FI]*/
  1711. /*[IF*/
  1712. if(r325call_invariant_start(a1)){
  1713. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  1714. T3 b1=((T3)'n');
  1715. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  1716. }/*]*/
  1717. /*]*/
  1718. /*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
  1719. T3 b1=((T3)'\51');
  1720. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  1721. }/*]*/
  1722. /*]*/
  1723. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  1724. T3 b1=((T3)'\73');
  1725. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  1726. }/*]*/
  1727. /*]*/
  1728. }
  1729. /*FI]*/
  1730. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  1731. T3 b1=((T3)'\175');
  1732. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  1733. }/*]*/
  1734. /*]*/
  1735. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  1736. T3 b1=((T3)'\n');
  1737. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  1738. }/*]*/
  1739. /*]*/
  1740. }
  1741.  
  1742.  
  1743. T0* r253add_comment(T253* C,T0* a1){
  1744. T0* R=NULL;
  1745. /*[IF*/
  1746. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
  1747. R=((T0*)(C));
  1748. }
  1749. /*AF*/else{
  1750. {T224*n=((T224*)malloc(sizeof(*n))/*12*/);
  1751. *n=M224;
  1752. r224make(n,(T0*)C,a1);
  1753. R=((T0*)n);
  1754. }
  1755. }
  1756. /*FI]*/
  1757. return R;
  1758. }
  1759.  
  1760.  
  1761. void r253check_created_type(T253* C,T0* a1){
  1762. T0* _rt=NULL;
  1763. _rt=X52run_type(a1);
  1764. /*[IF*/
  1765. if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
  1766. }
  1767.  else if((/*RF2*/((T51*)(X52base_class(_rt)))->_is_deferred/*16*/)){
  1768. r66add_type(_rt,((T0*)ms248_11648));
  1769. r253warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms248_30681));
  1770. }
  1771. /*FI]*/
  1772. /*[IF*/
  1773. if(X52is_formal_generic(a1)){
  1774. r66add_position((/*RF2*/(C)->_start_position/*4*/));
  1775. /*[IRF3.6append*/{T0* b1=((T0*)ms248_76570);
  1776. r7append((T7*)(oBC66explanation),b1);
  1777. }/*]*/
  1778. r66add_type(a1,((T0*)ms248_174));
  1779. r66print_as_fatal_error((T66*)(oBC13eh));
  1780. }
  1781. /*FI]*/
  1782. r50set_at_run_time((T50*)(X52run_class(_rt)));
  1783. }
  1784.  
  1785.  
  1786. void r253afd_check(T253* C){
  1787. /*[IF*/
  1788. if((r253arg_count(C))>(0)){
  1789. /*SSPRF3*//*X139afd_check*/r139afd_check((T139*)(r253run_args(C)));
  1790. }
  1791. /*FI]*/
  1792. }
  1793.  
  1794.  
  1795. void r253collect_c_tmp(T253* C){
  1796. T0* _arguments=NULL;
  1797. X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
  1798. _arguments=r253run_args(C);
  1799. /*[IF*/
  1800. if((_arguments)!=((void*)(NULL))){
  1801. /*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp(((T139*)_arguments));
  1802. }
  1803. /*FI]*/
  1804. }
  1805.  
  1806.  
  1807. void r253check_writable(T253* C,T0* a1){
  1808. T0* _w=NULL;
  1809. (/*SFN*/C->_current_type)=a1;
  1810. _w=X104to_runnable((/*RF2*/(C)->_writable/*12*/),a1);
  1811. /*[IF*/
  1812. if((_w)==((void*)(NULL))){
  1813. {T68 se_tmp0;
  1814. r66add_position((*(se_tmp0=X104start_position((/*RF2*/(C)->_writable/*12*/)),&se_tmp0)));
  1815. }
  1816. r253fatal_error(((T0*)ms248_63756));
  1817. }
  1818. else{
  1819. (/*SFN*/C->_writable)=_w;
  1820. }
  1821. /*FI]*/
  1822. }
  1823.  
  1824.  
  1825. T6 r253use_current(T253* C){
  1826. T6 R=0;
  1827. /*[IF*/
  1828. if((r253run_args(C))!=((void*)(NULL))){
  1829. R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)(r253run_args(C)));
  1830. }
  1831. /*FI]*/
  1832. R=(R)||(X104use_current((/*RF2*/(C)->_writable/*12*/)));
  1833. return R;
  1834. }
  1835.  
  1836.  
  1837. T0* r253to_runnable(T253* C,T0* a1){
  1838. T0* R=NULL;
  1839. /*[IF*/
  1840. if(((/*RF2*/(C)->_current_type/*20*/))==((void*)(NULL))){
  1841. r253check_writable(C,a1);
  1842. r253check_explicit_type(C);
  1843. r253check_created_type(C,(/*RF2*/(C)->_type/*28*/));
  1844. r253check_creation_clause(C,(/*RF2*/(C)->_type/*28*/));
  1845. R=((T0*)(C));
  1846. }
  1847. else{
  1848. {T253*n=((T253*)malloc(sizeof(*n))/*32*/);
  1849. *n=M253;
  1850. r253make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_type/*28*/),(/*RF2*/(C)->_writable/*12*/),(/*RF2*/(C)->_call/*24*/));
  1851. R=((T0*)n);
  1852. }
  1853. R=r253to_runnable(((T253*)R),a1);
  1854. }
  1855. /*FI]*/
  1856. return R;
  1857. }
  1858.  
  1859.  
  1860. void r253check_explicit_type(T253* C){
  1861. T0* _t=NULL;
  1862. T0* _ct=NULL;
  1863. _ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
  1864. _t=X52to_runnable((/*RF2*/(C)->_type/*28*/),_ct);
  1865. /*[IF*/
  1866. if(((_t)==((void*)(NULL)))||(!(X52is_run_type(_t)))){
  1867. {T68 se_tmp0;
  1868. r66add_position((*(se_tmp0=X52start_position((/*RF2*/(C)->_type/*28*/)),&se_tmp0)));
  1869. }
  1870. r253fatal_error(((T0*)ms250_33396));
  1871. }
  1872. else{
  1873. (/*SFN*/C->_type)=_t;
  1874. }
  1875. /*FI]*/
  1876. /*[IF*/
  1877. if(!(X52is_a((/*RF2*/(C)->_type/*28*/),X104result_type((/*RF2*/(C)->_writable/*12*/))))){
  1878. r253fatal_error(((T0*)ms250_34344));
  1879. }
  1880. /*FI]*/
  1881. }
  1882.  
  1883.  
  1884. void r253error(T68 a1,T0* a2){
  1885. r66add_position(a1);
  1886. /*[IRF3.6append*/{T0* b1=a2;
  1887. r7append((T7*)(oBC66explanation),b1);
  1888. }/*]*/
  1889. r66print_as_error((T66*)(oBC13eh));
  1890. }
  1891.  
  1892.  
  1893. void r253c2c_expanded_initializer(T253* C,T0* a1){
  1894. T0* _rf3=NULL;
  1895. _rf3=X52expanded_initializer(a1);
  1896. /*[IF*/
  1897. if((_rf3)!=((void*)(NULL))){
  1898. r325expanded_writable((T325*)(oBC13cpp),_rf3,(/*RF2*/(C)->_writable/*12*/));
  1899. }
  1900. /*FI]*/
  1901. }
  1902.  
  1903.  
  1904. T0* r253run_args(T253* C){
  1905. T0* R=NULL;
  1906. R=X152arguments((/*RF2*/(C)->_call/*24*/));
  1907. return R;
  1908. }
  1909.  
  1910.  
  1911. void r253make(T253* C,T68 a1,T0* a2,T0* a3,T0* a4){
  1912. (/*SFN*/C->_start_position)=a1;
  1913. (/*SFN*/C->_type)=a2;
  1914. (/*SFN*/C->_writable)=a3;
  1915. (/*SFN*/C->_call)=a4;
  1916. }
  1917.  
  1918.  
  1919. void r253fatal_error(T0* a1){
  1920. /*[IRF3.6append*/{T0* b1=a1;
  1921. r7append((T7*)(oBC66explanation),b1);
  1922. }/*]*/
  1923. r66print_as_fatal_error((T66*)(oBC13eh));
  1924. }
  1925.  
  1926.  
  1927. void r253compile_to_c(T253* C){
  1928. /*[IF*/
  1929. if(X52is_reference((/*RF2*/(C)->_type/*28*/))){
  1930. r253c2c_opening(C,(/*RF2*/(C)->_type/*28*/));
  1931. r325push_new((T325*)(oBC13cpp),(/*RF2*/(C)->_run_feature/*16*/),r253run_args(C));
  1932. X334mapping_c((/*RF2*/(C)->_run_feature/*16*/));
  1933. r325pop((T325*)(oBC13cpp));
  1934. r253c2c_closing(C,(/*RF2*/(C)->_type/*28*/));
  1935. }
  1936. else{
  1937. r253c2c_clear_expanded(C,X52id((/*RF2*/(C)->_type/*28*/)));
  1938. r253c2c_expanded_initializer(C,(/*RF2*/(C)->_type/*28*/));
  1939. }
  1940. /*FI]*/
  1941. }
  1942.  
  1943.  
  1944. T2 r253arg_count(T253* C){
  1945. T2 R=0;
  1946. /*[IF*/
  1947. if(((/*RF2*/(C)->_call/*24*/))!=((void*)(NULL))){
  1948. R=X152arg_count((/*RF2*/(C)->_call/*24*/));
  1949. }
  1950. /*FI]*/
  1951. return R;
  1952. }
  1953.  
  1954.  
  1955. void r253check_creation_clause(T253* C,T0* a1){
  1956. T0* _args=NULL;
  1957. T0* _top=NULL;
  1958. T0* _bottom=NULL;
  1959. T0* _fn=NULL;
  1960. T0* _ct=NULL;
  1961. _fn=/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
  1962. {T68 se_tmp0;
  1963. _top=(/*RF2*/((*(se_tmp0=X82start_position(_fn),&se_tmp0)))._base_class/*0*/);
  1964. }
  1965. _bottom=X52base_class(a1);
  1966. /*[IF*/
  1967. if(X52is_like_current(a1)){
  1968. _fn=r51new_name_of(((T51*)_bottom),_top,_fn);
  1969. /*[IF*/
  1970. if((_fn)==((void*)(NULL))){
  1971. _fn=/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
  1972. r66feature_not_found(_fn);
  1973. /*[IRF3.6append*/{T0* b1=((T0*)ms252_22600);
  1974. r7append((T7*)(oBC66explanation),b1);
  1975. }/*]*/
  1976. /*[IRF3.6append*/{T0* b1=X52run_time_mark(a1);
  1977. r7append((T7*)(oBC66explanation),b1);
  1978. }/*]*/
  1979. r253fatal_error(((T0*)ms14_160));
  1980. }
  1981. /*FI]*/
  1982. }
  1983. /*FI]*/
  1984. (/*SFN*/C->_run_feature)=r50get_feature((T50*)(X52run_class(a1)),_fn);
  1985. /*[IF*/
  1986. if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
  1987. r253cp_not_found(C,_fn);
  1988. }
  1989. /*FI]*/
  1990. /*[IF*/
  1991. if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
  1992. }
  1993.  else if(!(X52has_creation(a1,_fn))){
  1994. {T68 se_tmp0;
  1995. r66add_position((*(se_tmp0=X82start_position(/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
  1996. }
  1997. {T68 se_tmp0;
  1998. r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
  1999. }
  2000. /*[IRF3.6append*/{T0* b1=X82to_string(_fn);
  2001. r7append((T7*)(oBC66explanation),b1);
  2002. }/*]*/
  2003. /*[IRF3.6append*/{T0* b1=((T0*)ms252_45376);
  2004. r7append((T7*)(oBC66explanation),b1);
  2005. }/*]*/
  2006. r66add_type(a1,((T0*)ms14_46));
  2007. r66print_as_fatal_error((T66*)(oBC13eh));
  2008. }
  2009. /*FI]*/
  2010. r50add_client((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)))),X52run_class((/*RF2*/(C)->_current_type/*20*/)));
  2011. /*[IF*/
  2012. if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))!=((void*)(NULL))){
  2013. {T68 se_tmp0;
  2014. r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
  2015. }
  2016. {T68 se_tmp0;
  2017. r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
  2018. }
  2019. r253fatal_error(((T0*)ms252_66627));
  2020. }
  2021. /*FI]*/
  2022. /*[IF*/
  2023. if(((r253arg_count(C))==(0))&&((X334arguments((/*RF2*/(C)->_run_feature/*16*/)))!=((void*)(NULL)))){
  2024. {T68 se_tmp0;
  2025. r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
  2026. }
  2027. r66add_position((/*RF2*/(C)->_start_position/*4*/));
  2028. r253fatal_error(((T0*)ms252_63264));
  2029. }
  2030. /*FI]*/
  2031. /*[IF*/
  2032. if((r253arg_count(C))>(0)){
  2033. _ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
  2034. _args=X139to_runnable(X152arguments((/*RF2*/(C)->_call/*24*/)),_ct);
  2035. /*[IF*/
  2036. if((_args)==((void*)(NULL))){
  2037. {T68 se_tmp0;
  2038. r253error((*(se_tmp0=X139start_position(X152arguments((/*RF2*/(C)->_call/*24*/))),&se_tmp0)),((T0*)ms14_14504));
  2039. }
  2040. }
  2041. else{
  2042. X139match_with(_args,(/*RF2*/(C)->_run_feature/*16*/),_ct);
  2043. }
  2044. /*FI]*/
  2045. }
  2046. /*FI]*/
  2047. (/*SFN*/C->_call)=X152make_runnable((/*RF2*/(C)->_call/*24*/),(/*RF2*/(C)->_writable/*12*/),_args,(/*RF2*/(C)->_run_feature/*16*/));
  2048. }
  2049.  
  2050.  
  2051. T6 r253stupid_switch(T253* C,T0* a1){
  2052. T6 R=0;
  2053. T0* _t=NULL;
  2054. /*[IF*/
  2055. if(((/*RF2*/(C)->_type/*28*/))!=((void*)(NULL))){
  2056. _t=(/*RF2*/(C)->_type/*28*/);
  2057. }
  2058. else{
  2059. _t=X104result_type((/*RF2*/(C)->_writable/*12*/));
  2060. }
  2061. /*FI]*/
  2062. /*[IF*/
  2063. if(X52is_anchored(_t)){
  2064. }
  2065.  else if(X52is_generic(_t)){
  2066. }
  2067. else{
  2068. /*[IF*/
  2069. if(((/*RF2*/(C)->_call/*24*/))==((void*)(NULL))){
  2070. R=X104stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
  2071. }
  2072. else{
  2073. R=X152stupid_switch((/*RF2*/(C)->_call/*24*/),a1);
  2074. }
  2075. /*FI]*/
  2076. }
  2077. /*FI]*/
  2078. return R;
  2079. }
  2080.  
  2081.  
  2082. void r253c2c_opening(T253* C,T0* a1){
  2083. T0* _once_result=NULL;
  2084. T0* _rc=NULL;
  2085. _rc=X52run_class(a1);
  2086. r325se_trace_ins((T325*)(oBC13cpp),(/*RF2*/(C)->_start_position/*4*/));
  2087. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  2088. T3 b1=((T3)'\173');
  2089. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2090. }/*]*/
  2091. /*]*/
  2092. r344allocation((T344*)(oBC13gc_handler),_rc);
  2093. r325expanded_attributes((T325*)(oBC13cpp),a1);
  2094. _once_result=(/*RF2*/(C)->_writable/*12*/);
  2095. if(NULL!=(_once_result)){
  2096. switch(((T0*)_once_result)->id){
  2097. case 145:
  2098. break;
  2099. default:
  2100. _once_result=NULL;
  2101. }
  2102. }/*[IF*/
  2103. if((_once_result)!=((void*)(NULL))){
  2104. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),r145c_variable_name(((T145*)_once_result)));
  2105. /*]*/
  2106. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms248_4213a));
  2107. /*]*/
  2108. }
  2109. /*FI]*/
  2110. }
  2111.  
  2112.  
  2113. T6 r253is_pre_computable(T253* C){
  2114. T6 R=0;
  2115. T0* _rfctbcn=NULL;
  2116. T0* _rfn=NULL;
  2117. T0* _rfct=NULL;
  2118. /*[IF*/
  2119. if(X104is_result((/*RF2*/(C)->_writable/*12*/))){
  2120. /*[IF*/
  2121. if((r253run_args(C))==((void*)(NULL))){
  2122. R=1;
  2123. }
  2124. else{
  2125. R=/*SSFRF4*//*X139is_pre_computable*/r139is_pre_computable((T139*)(r253run_args(C)));
  2126. }
  2127. /*FI]*/
  2128. /*[IF*/
  2129. if(R){
  2130. /*[IF*/
  2131. if(X334is_pre_computable((/*RF2*/(C)->_run_feature/*16*/))){
  2132. }
  2133. else{
  2134. _rfct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
  2135. _rfctbcn=(/*RF2*/((T61*)((/*RF2*/((T51*)(X52base_class(_rfct)))->_name/*18*/)))->_to_string/*8*/);
  2136. _rfn=X82to_string(/*SSWARF2*//*X334name*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_name/*12*/));
  2137. /*[IF*/
  2138. if((((T0*)ms15_1656))==((void*)(_rfn))){
  2139. /*[IF*/
  2140. if((((T0*)ms15_1915))==((void*)(_rfctbcn))){
  2141. }
  2142.  else if((((T0*)ms15_14817))==((void*)(_rfctbcn))){
  2143. }
  2144.  else if((((T0*)ms15_4956))==((void*)(_rfctbcn))){
  2145. }
  2146.  else if((((T0*)ms15_12550))==((void*)(_rfctbcn))){
  2147. }
  2148.  else if((((T0*)ms15_16692))==((void*)(_rfctbcn))){
  2149. }
  2150.  else if((((T0*)ms15_19124))==((void*)(_rfctbcn))){
  2151. }
  2152. else{
  2153. R=0;
  2154. }
  2155. /*FI]*/
  2156. }
  2157.  else if((((T0*)ms15_2600))==((void*)(_rfn))){
  2158. /*[IF*/
  2159. if((((T0*)ms15_4956))==((void*)(_rfctbcn))){
  2160. }
  2161. else{
  2162. R=0;
  2163. }
  2164. /*FI]*/
  2165. }
  2166.  else if((((T0*)ms15_27456))==((void*)(_rfn))){
  2167. /*[IF*/
  2168. if((((T0*)ms15_1915))==((void*)(_rfctbcn))){
  2169. }
  2170.  else if((((T0*)ms15_14817))==((void*)(_rfctbcn))){
  2171. }
  2172.  else if((((T0*)ms15_12550))==((void*)(_rfctbcn))){
  2173. }
  2174. else{
  2175. R=0;
  2176. }
  2177. /*FI]*/
  2178. }
  2179. else{
  2180. R=0;
  2181. }
  2182. /*FI]*/
  2183. }
  2184. /*FI]*/
  2185. }
  2186. /*FI]*/
  2187. }
  2188. /*FI]*/
  2189. return R;
  2190. }
  2191.  
  2192.  
  2193. void r253cp_not_found(T253* C,T0* a1){
  2194. {T68 se_tmp0;
  2195. r66add_position((*(se_tmp0=X82start_position(/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
  2196. }
  2197. {T68 se_tmp0;
  2198. r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
  2199. }
  2200. r253fatal_error(((T0*)ms252_53041));
  2201. }
  2202.  
  2203.  
  2204. T0* r158add_comment(T158* C,T0* a1){
  2205. T0* R=NULL;
  2206. /*[IF*/
  2207. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
  2208. R=((T0*)(C));
  2209. }
  2210. else{
  2211. {T229*n=((T229*)malloc(sizeof(*n))/*12*/);
  2212. *n=M229;
  2213. r229make(n,(T0*)C,a1);
  2214. R=((T0*)n);
  2215. }
  2216. }
  2217. /*FI]*/
  2218. return R;
  2219. }
  2220.  
  2221.  
  2222. T0* r158to_runnable(T158* C,T0* a1){
  2223. T0* R=NULL;
  2224. T0* _t=NULL;
  2225. R=((T0*)(C));
  2226. _t=r263to_runnable((T263*)(/*(IRF4.8result_type*/r158type_boolean()/*)*/),a1);
  2227. return R;
  2228. }
  2229.  
  2230.  
  2231. void r158error(T68 a1,T0* a2){
  2232. r66add_position(a1);
  2233. /*[IRF3.6append*/{T0* b1=a2;
  2234. r7append((T7*)(oBC66explanation),b1);
  2235. }/*]*/
  2236. r66print_as_error((T66*)(oBC13eh));
  2237. }
  2238.  
  2239.  
  2240. T0* r158type_boolean(void){
  2241. if(fBC13type_boolean==0){fBC13type_boolean=1;{
  2242. T68 _unknown_position={NULL,0};
  2243. {T263*n=((T263*)malloc(sizeof(*n))/*8*/);
  2244. *n=M263;
  2245. oBC13type_boolean=((T0*)n);
  2246. r263make(n,_unknown_position);
  2247. }
  2248. }}
  2249. return oBC13type_boolean;
  2250. }
  2251.  
  2252.  
  2253. T0* r158static_result_base_class(void){
  2254. T0* R=NULL;
  2255. R=r49get_class(((T0*)ms15_6405));
  2256. return R;
  2257. }
  2258.  
  2259.  
  2260. T2 r158isa_dca_inline_argument(void){
  2261. T2 R=0;
  2262. /*[IF*/
  2263. {/*AT*/R=-(1);
  2264. }
  2265. /*FI]*/
  2266. return R;
  2267. }
  2268.  
  2269.  
  2270. void r128compile_to_c_old(T128* C){
  2271. X104compile_to_c_old((/*RF2*/(C)->_target/*4*/));
  2272. /*[IF*/
  2273. {/*AT*//*SSPRF3*//*X139compile_to_c_old*/r139compile_to_c_old((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  2274. }
  2275. /*FI]*/
  2276. }
  2277.  
  2278.  
  2279. T6 r128call_is_static(T128* C){
  2280. T6 R=0;
  2281. T0* _rf=NULL;
  2282. T0* _running=NULL;
  2283. T0* _rc=NULL;
  2284. /*[IF*/
  2285. if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
  2286. _rc=/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)));
  2287. /*[IF*/
  2288. if((_rc)!=((void*)(NULL))){
  2289. _running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
  2290. /*[IF*/
  2291. if(((_running)!=((void*)(NULL)))&&((r53count(((T53*)_running)))==(1))){
  2292. _rf=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/(((T53*)_running))->_storage/*0*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
  2293. /*[IF*/
  2294. if(X334is_static(_rf)){
  2295. (/*SFN*/C->_static_value_mem)=X334static_value_mem(_rf);
  2296. R=1;
  2297. }
  2298. /*FI]*/
  2299. }
  2300. /*FI]*/
  2301. }
  2302. /*FI]*/
  2303. }
  2304. /*FI]*/
  2305. return R;
  2306. }
  2307.  
  2308.  
  2309. T0* r128runnable_expression(T0* a1,T0* a2){
  2310. T0* R=NULL;
  2311. R=X104to_runnable(a1,a2);
  2312. /*[IF*/
  2313. if((R)==((void*)(NULL))){
  2314. {T68 se_tmp0;
  2315. r66add_position((*(se_tmp0=X104start_position(a1),&se_tmp0)));
  2316. }
  2317. r128fatal_error(((T0*)ms116_16290));
  2318. }
  2319. /*FI]*/
  2320. return R;
  2321. }
  2322.  
  2323.  
  2324. void r128run_feature_has_result(T128* C){
  2325. /*[IF*/
  2326. if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
  2327. {T68 se_tmp0;
  2328. r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
  2329. }
  2330. r66add_position((/*RF2*/((T129*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
  2331. r128fatal_error(((T0*)ms115_53215));
  2332. }
  2333. /*FI]*/
  2334. }
  2335.  
  2336.  
  2337. void r128run_feature_match(T128* C,T0* a1){
  2338. r128run_feature_has_result(C);
  2339. X139match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
  2340. }
  2341.  
  2342.  
  2343. T0* r128add_comment(T128* C,T0* a1){
  2344. T0* R=NULL;
  2345. /*[IF*/
  2346. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
  2347. R=((T0*)(C));
  2348. }
  2349. else{
  2350. {T229*n=((T229*)malloc(sizeof(*n))/*12*/);
  2351. *n=M229;
  2352. r229make(n,(T0*)C,a1);
  2353. R=((T0*)n);
  2354. }
  2355. }
  2356. /*FI]*/
  2357. return R;
  2358. }
  2359.  
  2360.  
  2361. void r128with(T128* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
  2362. (/*SFN*/C->_target)=a1;
  2363. (/*SFN*/C->_feature_name)=a2;
  2364. (/*SFN*/C->_arguments)=a3;
  2365. (/*SFN*/C->_run_feature)=a4;
  2366. r128run_feature_match(C,a5);
  2367. }
  2368.  
  2369.  
  2370. void r128mapping_c_target(T128* C,T0* a1){
  2371. T0* _actual_type=NULL;
  2372. T6 _flag=0;
  2373. _flag=r325call_invariant_start(a1);
  2374. _actual_type=X52run_type(r128result_type(C));
  2375. /*[IF*/
  2376. if(X52is_reference(_actual_type)){
  2377. /*[IF*/
  2378. if(X52is_reference(a1)){
  2379. X52mapping_cast(a1);
  2380. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  2381. T3 b1=((T3)'\50');
  2382. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2383. }/*]*/
  2384. /*]*/
  2385. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
  2386. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  2387. }/*]*/
  2388. /*]*/
  2389. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  2390. T3 b1=((T3)'\51');
  2391. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2392. }/*]*/
  2393. /*]*/
  2394. }
  2395. else{
  2396. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
  2397. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  2398. }/*]*/
  2399. /*]*/
  2400. }
  2401. /*FI]*/
  2402. }
  2403. else{
  2404. /*[IF*/
  2405. if(X52is_reference(a1)){
  2406. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
  2407. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  2408. }/*]*/
  2409. /*]*/
  2410. }
  2411. else{
  2412. /*[IF*/
  2413. if(X52need_c_struct(a1)){
  2414. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  2415. T3 b1=((T3)'\46');
  2416. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2417. }/*]*/
  2418. /*]*/
  2419. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  2420. T3 b1=((T3)'\50');
  2421. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2422. }/*]*/
  2423. /*]*/
  2424. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
  2425. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  2426. }/*]*/
  2427. /*]*/
  2428. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  2429. T3 b1=((T3)'\51');
  2430. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2431. }/*]*/
  2432. /*]*/
  2433. }
  2434. else{
  2435. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
  2436. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  2437. }/*]*/
  2438. /*]*/
  2439. }
  2440. /*FI]*/
  2441. }
  2442. /*FI]*/
  2443. }
  2444. /*FI]*/
  2445. /*[IF*/
  2446. if(_flag){
  2447. /*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
  2448. T3 b1=((T3)'\51');
  2449. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2450. }/*]*/
  2451. /*]*/
  2452. }
  2453. /*FI]*/
  2454. }
  2455.  
  2456.  
  2457. void r128afd_check(T128* C){
  2458. T0* _running=NULL;
  2459. T0* _rc=NULL;
  2460. /*[IF*/
  2461. if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
  2462. _rc=X52run_class(X104result_type((/*RF2*/(C)->_target/*4*/)));
  2463. _running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
  2464. /*[IF*/
  2465. if((_running)==((void*)(NULL))){
  2466. }
  2467.  else if((r53count(((T53*)_running)))>(1)){
  2468. r351update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
  2469. }
  2470. /*FI]*/
  2471. }
  2472. /*FI]*/
  2473. X104afd_check((/*RF2*/(C)->_target/*4*/));
  2474. /*[IF*/
  2475. {/*AT*//*SSPRF3*//*X139afd_check*/r139afd_check((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  2476. }
  2477. /*FI]*/
  2478. }
  2479.  
  2480.  
  2481. void r128c_declare_for_old(T128* C){
  2482. X104c_declare_for_old((/*RF2*/(C)->_target/*4*/));
  2483. /*[IF*/
  2484. {/*AT*//*SSPRF3*//*X139c_declare_for_old*/r139c_declare_for_old((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  2485. }
  2486. /*FI]*/
  2487. }
  2488.  
  2489.  
  2490. void r128collect_c_tmp(T128* C){
  2491. /*[IF*/
  2492. if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
  2493. X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
  2494. }
  2495. /*FI]*/
  2496. X104collect_c_tmp((/*RF2*/(C)->_target/*4*/));
  2497. /*[IF*/
  2498. if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
  2499. /*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  2500. }
  2501. /*FI]*/
  2502. }
  2503.  
  2504.  
  2505. T6 r128use_current(T128* C){
  2506. T6 R=0;
  2507. /*[IF*/
  2508. {/*AT*/R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)((/*RF2*/(C)->_arguments/*8*/)));
  2509. }
  2510. /*FI]*/
  2511. /*[IF*/
  2512. if(R){
  2513. }
  2514.  else if(X104is_current((/*RF2*/(C)->_target/*4*/))){
  2515. R=X334use_current((/*RF2*/(C)->_run_feature/*16*/));
  2516. }
  2517. else{
  2518. R=X104use_current((/*RF2*/(C)->_target/*4*/));
  2519. }
  2520. /*FI]*/
  2521. return R;
  2522. }
  2523.  
  2524.  
  2525. T0* r128runnable_args(T0* a1,T0* a2){
  2526. T0* R=NULL;
  2527. R=X139to_runnable(a1,a2);
  2528. /*[IF*/
  2529. if((R)==((void*)(NULL))){
  2530. {T68 se_tmp0;
  2531. r66add_position((*(se_tmp0=X139start_position(a1),&se_tmp0)));
  2532. }
  2533. r128fatal_error(((T0*)ms14_12870));
  2534. }
  2535. /*FI]*/
  2536. return R;
  2537. }
  2538.  
  2539.  
  2540. T0* r128to_runnable(T128* C,T0* a1){
  2541. T0* R=NULL;
  2542. T0* _target_type=NULL;
  2543. T0* _argument_type=NULL;
  2544. T0* _rf=NULL;
  2545. T0* _a=NULL;
  2546. T0* _t=NULL;
  2547. _t=r128runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
  2548. _a=r128runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
  2549. _target_type=X104result_type(_t);
  2550. _argument_type=X104result_type(r128arg1(C));
  2551. /*[IF*/
  2552. if(X52is_real(_argument_type)){
  2553. /*[IF*/
  2554. if(X52is_integer(_target_type)){
  2555. _t=r341implicit_cast((T341*)(oBC13conversion_handler),_t,_argument_type);
  2556. }
  2557. /*FI]*/
  2558. }
  2559.  else if(X52is_double(_argument_type)){
  2560. /*[IF*/
  2561. if((X52is_integer(_target_type))||(X52is_real(_target_type))){
  2562. _t=r341implicit_cast((T341*)(oBC13conversion_handler),_t,_argument_type);
  2563. }
  2564. /*FI]*/
  2565. }
  2566. /*FI]*/
  2567. _rf=r128run_feature_for(C,_t,a1);
  2568. /*[IF*/
  2569. if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
  2570. (/*SFN*/C->_target)=_t;
  2571. (/*SFN*/C->_arguments)=_a;
  2572. (/*SFN*/C->_run_feature)=_rf;
  2573. r128run_feature_match(C,a1);
  2574. R=((T0*)(C));
  2575. }
  2576.  else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
  2577. R=((T0*)(C));
  2578. }
  2579. else{
  2580. {T128*n=((T128*)malloc(sizeof(*n))/*24*/);
  2581. *n=M128;
  2582. r128with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
  2583. R=((T0*)n);
  2584. }
  2585. }
  2586. /*FI]*/
  2587. return R;
  2588. }
  2589.  
  2590.  
  2591. T2 r128to_integer(T128* C){
  2592. T2 R=0;
  2593. r128error(/*(IRF4.6start_position*/(/*RF2*/(((T129*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/,((T0*)ms14_45441));
  2594. return R;
  2595. }
  2596.  
  2597.  
  2598. void r128finalize(T128* C){
  2599. T0* _rf=NULL;
  2600. T0* _rc=NULL;
  2601. _rf=(/*RF2*/(C)->_run_feature/*16*/);
  2602. _rc=X52run_class(/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)_rf))->_current_type/*8*/));
  2603. (/*SFN*/C->_run_feature)=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/)))->_storage/*0*/))[0]/*)*/),_rf);
  2604. }
  2605.  
  2606.  
  2607. void r128error(T68 a1,T0* a2){
  2608. r66add_position(a1);
  2609. /*[IRF3.6append*/{T0* b1=a2;
  2610. r7append((T7*)(oBC66explanation),b1);
  2611. }/*]*/
  2612. r66print_as_error((T66*)(oBC13eh));
  2613. }
  2614.  
  2615.  
  2616. T0* r128result_type(T128* C){
  2617. T0* R=NULL;
  2618. T0* _tla=NULL;
  2619. R=X334result_type((/*RF2*/(C)->_run_feature/*16*/));
  2620. /*[IF*/
  2621. if(X52is_like_current(R)){
  2622. R=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
  2623. }
  2624. else{
  2625. _tla=R;
  2626. if(NULL!=(_tla)){
  2627. switch(((T0*)_tla)->id){
  2628. case 257:
  2629. break;
  2630. default:
  2631. _tla=NULL;
  2632. }
  2633. }/*[IF*/
  2634. if((_tla)!=((void*)(NULL))){
  2635. R=X52run_type(X104result_type(r128arg1(C)));
  2636. }
  2637. /*FI]*/
  2638. }
  2639. /*FI]*/
  2640. return R;
  2641. }
  2642.  
  2643.  
  2644. T0* r128arg1(T128* C){
  2645. T0* R=NULL;
  2646. R=/*SSFRF4*//*X139first*//*(IRF4.3first*/(/*RF2*/((T139*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
  2647. return R;
  2648. }
  2649.  
  2650.  
  2651. T6 r128call_proc_call_stupid_switch(T128* C,T0* a1){
  2652. T6 R=0;
  2653. /*[IF*/
  2654. if(((/*RF2*/(C)->_arguments/*8*/))==((void*)(NULL))){
  2655. R=1;
  2656. }
  2657. else{
  2658. R=/*SSFRF4*//*X139stupid_switch*/r139stupid_switch((T139*)((/*RF2*/(C)->_arguments/*8*/)),a1);
  2659. }
  2660. /*FI]*/
  2661. /*[IF*/
  2662. if(R){
  2663. /*[IF*/
  2664. if(X104is_current((/*RF2*/(C)->_target/*4*/))){
  2665. /*[IF*/
  2666. if(r49same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
  2667. R=(X334stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
  2668. }
  2669. else{
  2670. R=0;
  2671. }
  2672. /*FI]*/
  2673. }
  2674. else{
  2675. R=X104stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
  2676. }
  2677. /*FI]*/
  2678. }
  2679. /*FI]*/
  2680. return R;
  2681. }
  2682.  
  2683.  
  2684. T0* r128run_feature_for(T128* C,T0* a1,T0* a2){
  2685. T0* R=NULL;
  2686. T0* _bc=NULL;
  2687. T0* _rt=NULL;
  2688. T0* _rc=NULL;
  2689. _rt=X104result_type(a1);
  2690. /*[IF*/
  2691. if((_rt)!=((void*)(NULL))){
  2692. _rc=X52run_class(_rt);
  2693. /*[IF*/
  2694. if((_rc)!=((void*)(NULL))){
  2695. _bc=r50base_class(((T50*)_rc));
  2696. R=r51run_feature_for(((T51*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*12*/),a2);
  2697. }
  2698. /*FI]*/
  2699. }
  2700. /*FI]*/
  2701. /*[IF*/
  2702. if((R)==((void*)(NULL))){
  2703. r66add_position((/*RF2*/((T129*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
  2704. /*[IRF3.6append*/{T0* b1=((T0*)ms116_39025);
  2705. r7append((T7*)(oBC66explanation),b1);
  2706. }/*]*/
  2707. r66print_as_fatal_error((T66*)(oBC13eh));
  2708. }
  2709. /*FI]*/
  2710. return R;
  2711. }
  2712.  
  2713.  
  2714. T0* r128static_result_base_class(T128* C){
  2715. T0* R=NULL;
  2716. T0* _cn=NULL;
  2717. T0* _rt=NULL;
  2718. T0* _e_feature=NULL;
  2719. T0* _bc=NULL;
  2720. _bc=X104static_result_base_class((/*RF2*/(C)->_target/*4*/));
  2721. /*[IF*/
  2722. if((_bc)!=((void*)(NULL))){
  2723. _e_feature=r51e_feature(((T51*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
  2724. /*[IF*/
  2725. if((_e_feature)!=((void*)(NULL))){
  2726. _rt=X90result_type(_e_feature);
  2727. /*[IF*/
  2728. if((_rt)!=((void*)(NULL))){
  2729. _cn=X52static_base_class_name(_rt);
  2730. /*[IF*/
  2731. if((_cn)!=((void*)(NULL))){
  2732. R=r61base_class(((T61*)_cn));
  2733. }
  2734. /*FI]*/
  2735. }
  2736. /*FI]*/
  2737. }
  2738. /*FI]*/
  2739. }
  2740. /*FI]*/
  2741. return R;
  2742. }
  2743.  
  2744.  
  2745. void r128make(T128* C,T0* a1,T0* a2,T0* a3){
  2746. (/*SFN*/C->_target)=a1;
  2747. (/*SFN*/C->_feature_name)=a2;
  2748. {T139*n=((T139*)malloc(sizeof(*n))/*16*/);
  2749. *n=M139;
  2750. /*[IRF3.3make_1*/((((T139*)(n)))->_first_one)=(a3);
  2751. /*]*/
  2752. (/*SFN*/C->_arguments)=((T0*)n);
  2753. }
  2754. }
  2755.  
  2756.  
  2757. void r128fatal_error(T0* a1){
  2758. /*[IRF3.6append*/{T0* b1=a1;
  2759. r7append((T7*)(oBC66explanation),b1);
  2760. }/*]*/
  2761. r66print_as_fatal_error((T66*)(oBC13eh));
  2762. }
  2763.  
  2764.  
  2765. void r128assertion_check(T128* C,T3 a1){
  2766. /*[IF*/
  2767. if((a1)==(((T3)'R'))){
  2768. X334vape_check_from((/*RF2*/(C)->_run_feature/*16*/),/*(IRF4.6start_position*/(/*RF2*/(((T129*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
  2769. }
  2770. /*FI]*/
  2771. X104assertion_check((/*RF2*/(C)->_target/*4*/),a1);
  2772. X104assertion_check(r128arg1(C),a1);
  2773. }
  2774.  
  2775.  
  2776. T6 r128stupid_switch(T128* C,T0* a1){
  2777. T6 R=0;
  2778. R=r128call_proc_call_stupid_switch(C,a1);
  2779. /*[IF*/
  2780. if(R){
  2781. R=!(X52is_native_array(r128result_type(C)));
  2782. }
  2783. /*FI]*/
  2784. return R;
  2785. }
  2786.  
  2787.  
  2788. void r225print_else(T6 a1){
  2789. /*[IF*/
  2790. if(a1){
  2791. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms225_3894));
  2792. /*]*/
  2793. }
  2794. /*FI]*/
  2795. }
  2796.  
  2797.  
  2798. void r225make(T225* C,T0* a1,T0* a2){
  2799. (/*SFN*/C->_expression)=a1;
  2800. (/*SFN*/C->_then_compound)=a2;
  2801. }
  2802.  
  2803.  
  2804. T2 r225compile_to_c(T225* C,T6 a1){
  2805. T2 R=0;
  2806. T6 _trace=0;
  2807. /*[IF*/
  2808. if(X104is_static((/*RF2*/(C)->_expression/*0*/))){
  2809. r325incr_static_expression_count((T325*)(oBC13cpp));
  2810. /*[IF*/
  2811. if((X104static_value((/*RF2*/(C)->_expression/*0*/)))==(1)){
  2812. r225print_else(a1);
  2813. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms225_4830));
  2814. /*]*/
  2815. /*[IF*/
  2816. if(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL))){
  2817. r215compile_to_c((T215*)((/*RF2*/(C)->_then_compound/*4*/)));
  2818. }
  2819. /*FI]*/
  2820. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
  2821. /*]*/
  2822. R=1;
  2823. }
  2824. else{
  2825. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms225_3288));
  2826. /*]*/
  2827. R=2;
  2828. }
  2829. /*FI]*/
  2830. }
  2831. else{
  2832. R=3;
  2833. _trace=(!(X104c_simple((/*RF2*/(C)->_expression/*0*/))))&&(r47no_check((T47*)(oBC13run_control)));
  2834. r225print_else(a1);
  2835. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_414));
  2836. /*]*/
  2837. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  2838. T3 b1=((T3)'\50');
  2839. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2840. }/*]*/
  2841. /*]*/
  2842. /*[IF*/
  2843. if(_trace){
  2844. r325trace_boolean_expression((T325*)(oBC13cpp),(/*RF2*/(C)->_expression/*0*/));
  2845. }
  2846. else{
  2847. X104compile_to_c((/*RF2*/(C)->_expression/*0*/));
  2848. }
  2849. /*FI]*/
  2850. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  2851. T3 b1=((T3)'\51');
  2852. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  2853. }/*]*/
  2854. /*]*/
  2855. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_266));
  2856. /*]*/
  2857. /*[IF*/
  2858. if(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL))){
  2859. r215compile_to_c((T215*)((/*RF2*/(C)->_then_compound/*4*/)));
  2860. }
  2861. /*FI]*/
  2862. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
  2863. /*]*/
  2864. }
  2865. /*FI]*/
  2866. return R;
  2867. }
  2868.  
  2869.  
  2870. void r225afd_check(T225* C){
  2871. X104afd_check((/*RF2*/(C)->_expression/*0*/));
  2872. /*[IF*/
  2873. if(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL))){
  2874. r215afd_check((T215*)((/*RF2*/(C)->_then_compound/*4*/)));
  2875. }
  2876. /*FI]*/
  2877. }
  2878.  
  2879.  
  2880. void r225collect_c_tmp(T225* C){
  2881. X104collect_c_tmp((/*RF2*/(C)->_expression/*0*/));
  2882. }
  2883.  
  2884.  
  2885. T6 r225use_current(T225* C){
  2886. T6 R=0;
  2887. R=X104use_current((/*RF2*/(C)->_expression/*0*/));
  2888. /*[IF*/
  2889. if((!(R))&&(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL)))){
  2890. R=r215use_current((T215*)((/*RF2*/(C)->_then_compound/*4*/)));
  2891. }
  2892. /*FI]*/
  2893. return R;
  2894. }
  2895.  
  2896.  
  2897. T6 r225stupid_switch(T225* C,T0* a1){
  2898. T6 R=0;
  2899. R=(X104stupid_switch((/*RF2*/(C)->_expression/*0*/),a1))&&((((/*RF2*/(C)->_then_compound/*4*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_then_compound/*4*/)),a1)));
  2900. return R;
  2901. }
  2902.  
  2903.  
  2904. T0* r225to_runnable(T225* C,T0* a1){
  2905. T0* R=NULL;
  2906. T0* _t=NULL;
  2907. T0* _tc=NULL;
  2908. T0* _e=NULL;
  2909. /*[IF*/
  2910. if(((/*RF2*/(C)->_current_type/*8*/))==((void*)(NULL))){
  2911. (/*SFN*/C->_current_type)=a1;
  2912. _e=X104to_runnable((/*RF2*/(C)->_expression/*0*/),a1);
  2913. /*[IF*/
  2914. if((_e)==((void*)(NULL))){
  2915. {T68 se_tmp0;
  2916. r225error((*(se_tmp0=X104start_position((/*RF2*/(C)->_expression/*0*/)),&se_tmp0)),((T0*)ms225_32637));
  2917. }
  2918. }
  2919. else{
  2920. (/*SFN*/C->_expression)=_e;
  2921. _t=X104result_type((/*RF2*/(C)->_expression/*0*/));
  2922. /*[IF*/
  2923. if(!(X52is_boolean(_t))){
  2924. /*[IRF3.6append*/{T0* b1=((T0*)ms225_74948);
  2925. r7append((T7*)(oBC66explanation),b1);
  2926. }/*]*/
  2927. r66add_type(X104result_type((/*RF2*/(C)->_expression/*0*/)),((T0*)ms14_18080));
  2928. {T68 se_tmp0;
  2929. r66add_position((*(se_tmp0=X104start_position((/*RF2*/(C)->_expression/*0*/)),&se_tmp0)));
  2930. }
  2931. r66print_as_error((T66*)(oBC13eh));
  2932. }
  2933. /*FI]*/
  2934. }
  2935. /*FI]*/
  2936. /*[IF*/
  2937. if(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL))){
  2938. _tc=r215to_runnable((T215*)((/*RF2*/(C)->_then_compound/*4*/)),a1);
  2939. /*[IF*/
  2940. if((_tc)!=((void*)(NULL))){
  2941. (/*SFN*/C->_then_compound)=_tc;
  2942. }
  2943. /*FI]*/
  2944. }
  2945. /*FI]*/
  2946. /*[IF*/
  2947. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  2948. R=((T0*)(C));
  2949. }
  2950. /*FI]*/
  2951. }
  2952. else{
  2953. {T225*n=((T225*)malloc(sizeof(*n))/*12*/);
  2954. *n=M225;
  2955. r225make(n,(/*RF2*/(C)->_expression/*0*/),(/*RF2*/(C)->_then_compound/*4*/));
  2956. R=((T0*)n);
  2957. }
  2958. R=r225to_runnable(((T225*)R),a1);
  2959. }
  2960. /*FI]*/
  2961. return R;
  2962. }
  2963.  
  2964.  
  2965. void r225error(T68 a1,T0* a2){
  2966. r66add_position(a1);
  2967. /*[IRF3.6append*/{T0* b1=a2;
  2968. r7append((T7*)(oBC66explanation),b1);
  2969. }/*]*/
  2970. r66print_as_error((T66*)(oBC13eh));
  2971. }
  2972.  
  2973.  
  2974. T0* r204try_to_undefine_aux(T204* C,T0* a1,T0* a2){
  2975. T0* R=NULL;
  2976. {T68 se_tmp0;
  2977. r66add_position((*(se_tmp0=r204start_position(C),&se_tmp0)));
  2978. }
  2979. {T68 se_tmp0;
  2980. r204error((*(se_tmp0=X82start_position(a1),&se_tmp0)),((T0*)ms200_98784));
  2981. }
  2982. r51fatal_undefine(((T51*)a2),a1);
  2983. return R;
  2984. }
  2985.  
  2986.  
  2987. T0* r204try_to_undefine(T204* C,T0* a1,T0* a2){
  2988. T0* R=NULL;
  2989. T0* _fn2=NULL;
  2990. {T68 se_tmp0;
  2991. r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
  2992. }
  2993. _fn2=r83feature_name((T83*)((/*RF2*/(C)->_names/*8*/)),X82to_key(a1));
  2994. /*[IF*/
  2995. if((_fn2)!=((void*)(NULL))){
  2996. X82undefine_in(_fn2,a2);
  2997. }
  2998. /*FI]*/
  2999. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
  3000. /*]*/
  3001. /*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
  3002. /*]*/
  3003. /*]*/
  3004. R=r204try_to_undefine_aux(C,a1,a2);
  3005. /*[IF*/
  3006. if((R)!=((void*)(NULL))){
  3007. X284set_clients(R,(/*RF2*/(C)->_clients/*16*/));
  3008. r204merge_header_comments(C,R);
  3009. }
  3010. else{
  3011. r51fatal_undefine(((T51*)a2),a1);
  3012. }
  3013. /*FI]*/
  3014. return R;
  3015. }
  3016.  
  3017.  
  3018. void r204check_obsolete(T204* C,T68 a1){
  3019. /*[IF*/
  3020. /*AF*//*AE*/
  3021. /*FI]*/
  3022. }
  3023.  
  3024.  
  3025. T0* r204to_run_feature(T204* C,T0* a1,T0* a2){
  3026. T0* R=NULL;
  3027. T0* _rc=NULL;
  3028. _rc=X52run_class(a1);
  3029. R=r50at(((T50*)_rc),a2);
  3030. if(NULL!=(R)){
  3031. switch(((T0*)R)->id){
  3032. case 388:
  3033. break;
  3034. default:
  3035. R=NULL;
  3036. }
  3037. }/*[IF*/
  3038. if((R)==((void*)(NULL))){
  3039. {T388*n=((T388*)malloc(sizeof(*n))/*36*/);
  3040. *n=M388;
  3041. r388make(n,a1,a2,(T0*)C);
  3042. R=((T0*)n);
  3043. }
  3044. }
  3045. /*FI]*/
  3046. return R;
  3047. }
  3048.  
  3049.  
  3050. void r204error(T68 a1,T0* a2){
  3051. r66add_position(a1);
  3052. /*[IRF3.6append*/{T0* b1=a2;
  3053. r7append((T7*)(oBC66explanation),b1);
  3054. }/*]*/
  3055. r66print_as_error((T66*)(oBC13eh));
  3056. }
  3057.  
  3058.  
  3059. T6 r204is_not_mergeable_with(T204* C,T0* a1){
  3060. T6 R=0;
  3061. /*[IF*/
  3062. if(((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL))){
  3063. R=(X90result_type(a1))!=((void*)(NULL));
  3064. }
  3065. else{
  3066. R=(X90result_type(a1))==((void*)(NULL));
  3067. }
  3068. /*FI]*/
  3069. /*[IF*/
  3070. if(R){
  3071. /*[IRF3.6append*/{T0* b1=((T0*)ms90_64152);
  3072. r7append((T7*)(oBC66explanation),b1);
  3073. }/*]*/
  3074. }
  3075. else{
  3076. /*[IF*/
  3077. {/*AT*/R=(X90arguments(a1))!=((void*)(NULL));
  3078. }
  3079. /*FI]*/
  3080. /*[IF*/
  3081. if(R){
  3082. /*[IRF3.6append*/{T0* b1=((T0*)ms90_82612);
  3083. r7append((T7*)(oBC66explanation),b1);
  3084. }/*]*/
  3085. }
  3086.  else {/*AT*/}
  3087. /*FI]*/
  3088. }
  3089. /*FI]*/
  3090. r204merge_header_comments(C,a1);
  3091. return R;
  3092. }
  3093.  
  3094.  
  3095. void r204make(T204* C,T0* a1,T0* a2,T0* a3){
  3096. /*[IRF3.3make_e_feature*/((((T204*)(C)))->_names)=(a1);
  3097. /*]*/
  3098. (/*SFN*/C->_result_type)=a2;
  3099. (/*SFN*/C->_value_mem)=a3;
  3100. }
  3101.  
  3102.  
  3103. void r204add_into(T204* C,T0* a1){
  3104. T0* _fn=NULL;
  3105. T2 _i=0;
  3106. {T68 se_tmp0;
  3107. (/*SFN*/C->_base_class)=(/*RF2*/((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),1)),&se_tmp0)))._base_class/*0*/);
  3108. }
  3109. _i=1;
  3110. while (!((_i)>(r83count((T83*)((/*RF2*/(C)->_names/*8*/))))))
  3111. {
  3112. _fn=r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i);
  3113. /*[IF*/
  3114. if(r91has(((T91*)a1),X82to_key(_fn))){
  3115. _fn=/*SSFRF4*//*X90first_name*//*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/((T198*)(r91at(((T91*)a1),X82to_key(_fn))))->_names/*8*/))))->_first/*0*/)/*)*/;
  3116. {T68 se_tmp0;
  3117. r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
  3118. }
  3119. {T68 se_tmp0;
  3120. r66add_position((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i)),&se_tmp0)));
  3121. }
  3122. /*[IRF3.6append*/{T0* b1=((T0*)ms90_41470);
  3123. r7append((T7*)(oBC66explanation),b1);
  3124. }/*]*/
  3125. /*[IRF3.6append*/{T0* b1=X82to_string(_fn);
  3126. r7append((T7*)(oBC66explanation),b1);
  3127. }/*]*/
  3128. /*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
  3129. r7append((T7*)(oBC66explanation),b1);
  3130. }/*]*/
  3131. r66print_as_error((T66*)(oBC13eh));
  3132. }
  3133. else{
  3134. r91put(((T91*)a1),(T0*)C,X82to_key(_fn));
  3135. }
  3136. /*FI]*/
  3137. _i=(_i)+(1);
  3138. }
  3139. }
  3140.  
  3141.  
  3142. T6 r204can_hide(T204* C,T0* a1,T0* a2){
  3143. T6 R=0;
  3144. /*[IF*/
  3145. if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(X90result_type(a1)))){
  3146. /*[IF*/
  3147. if((((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL)))||((X90result_type(a1))==((void*)(NULL)))){
  3148. {T68 se_tmp0;
  3149. r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
  3150. }
  3151. {T68 se_tmp0;
  3152. r204error((*(se_tmp0=r204start_position(C),&se_tmp0)),((T0*)ms90_64152));
  3153. }
  3154. }
  3155. /*FI]*/
  3156. }
  3157. /*FI]*/
  3158. /*[IF*/
  3159. if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X90arguments(a1)))){
  3160. /*[IF*/
  3161. {/*AT*/{T68 se_tmp0;
  3162. r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
  3163. }
  3164. {T68 se_tmp0;
  3165. r204error((*(se_tmp0=r204start_position(C),&se_tmp0)),((T0*)ms90_82612));
  3166. }
  3167. }
  3168. /*FI]*/
  3169. }
  3170. /*FI]*/
  3171. /*[IF*/
  3172. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  3173. /*[IF*/
  3174. if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(NULL))){
  3175. /*[IF*/
  3176. if(!(X52is_a_in((/*RF2*/(C)->_result_type/*20*/),X90result_type(a1),a2))){
  3177. /*[IRF3.6append*/{T0* b1=((T0*)ms90_51136);
  3178. r7append((T7*)(oBC66explanation),b1);
  3179. }/*]*/
  3180. /*[IRF3.6append*/{T0* b1=X52run_time_mark((/*RF2*/(((T50*)a2))->_current_type/*0*/));
  3181. r7append((T7*)(oBC66explanation),b1);
  3182. }/*]*/
  3183. /*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
  3184. r7append((T7*)(oBC66explanation),b1);
  3185. }/*]*/
  3186. r66print_as_error((T66*)(oBC13eh));
  3187. }
  3188. /*FI]*/
  3189. }
  3190. /*FI]*/
  3191. }
  3192. /*FI]*/
  3193. /*[IF*/
  3194. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  3195. /*[IF*/
  3196. /*AF*//*AE*/
  3197. /*FI]*/
  3198. }
  3199. /*FI]*/
  3200. R=(/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0);
  3201. /*[IF*/
  3202. if(R){
  3203. r204merge_header_comments(C,a1);
  3204. }
  3205. /*FI]*/
  3206. return R;
  3207. }
  3208.  
  3209.  
  3210. void r204merge_header_comments(T204* C,T0* a1){
  3211. /*[IF*/
  3212. if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
  3213. /*[IF*/
  3214. if(((/*RF2*/(C)->_header_comment/*12*/))==((void*)(NULL))){
  3215. (/*SFN*/C->_header_comment)=/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/);
  3216. }
  3217.  else if((/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/))==((void*)(NULL))){
  3218. X90set_header_comment(a1,(/*RF2*/(C)->_header_comment/*12*/));
  3219. }
  3220. /*FI]*/
  3221. }
  3222. /*FI]*/
  3223. }
  3224.  
  3225.  
  3226. T68 r204start_position(T204* C){
  3227. T68 R={NULL,0};
  3228. {T68 se_tmp0;
  3229. R=(*(se_tmp0=X82start_position(/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
  3230. }
  3231. return R;
  3232. }
  3233.  
  3234.  
  3235. void r143compile_to_c_old(T143* C){
  3236. X104compile_to_c_old((/*RF2*/(C)->_target/*4*/));
  3237. /*[IF*/
  3238. if((r143arg_count(C))>(0)){
  3239. /*SSPRF3*//*X139compile_to_c_old*/r139compile_to_c_old((T139*)((/*RF2*/(C)->_arguments/*12*/)));
  3240. }
  3241. /*FI]*/
  3242. }
  3243.  
  3244.  
  3245. T0* r143runnable_expression(T0* a1,T0* a2){
  3246. T0* R=NULL;
  3247. R=X104to_runnable(a1,a2);
  3248. /*[IF*/
  3249. if((R)==((void*)(NULL))){
  3250. {T68 se_tmp0;
  3251. r66add_position((*(se_tmp0=X104start_position(a1),&se_tmp0)));
  3252. }
  3253. r143fatal_error(((T0*)ms116_16290));
  3254. }
  3255. /*FI]*/
  3256. return R;
  3257. }
  3258.  
  3259.  
  3260. void r143run_feature_has_result(T143* C){
  3261. /*[IF*/
  3262. if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
  3263. {T68 se_tmp0;
  3264. r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
  3265. }
  3266. {T68 se_tmp0;
  3267. r66add_position((*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
  3268. }
  3269. r143fatal_error(((T0*)ms115_53215));
  3270. }
  3271. /*FI]*/
  3272. }
  3273.  
  3274.  
  3275. T2 r143static_value(T143* C){
  3276. T2 R=0;
  3277. T0* _rf=NULL;
  3278. T0* _running=NULL;
  3279. _running=(/*RF2*/((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)))))->_running/*9*/);
  3280. /*[IF*/
  3281. if(((_running)!=((void*)(NULL)))&&((r53count(((T53*)_running)))==(1))){
  3282. _rf=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/(((T53*)_running))->_storage/*0*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
  3283. /*[IF*/
  3284. if(X334is_static(_rf)){
  3285. R=X334static_value_mem(_rf);
  3286. }
  3287. /*FI]*/
  3288. }
  3289. /*FI]*/
  3290. return R;
  3291. }
  3292.  
  3293.  
  3294. void r143run_feature_match(T143* C,T0* a1){
  3295. r143run_feature_has_result(C);
  3296. X139match_with((/*RF2*/(C)->_arguments/*12*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
  3297. }
  3298.  
  3299.  
  3300. T0* r143add_comment(T143* C,T0* a1){
  3301. T0* R=NULL;
  3302. /*[IF*/
  3303. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
  3304. R=((T0*)(C));
  3305. }
  3306. else{
  3307. {T229*n=((T229*)malloc(sizeof(*n))/*12*/);
  3308. *n=M229;
  3309. r229make(n,(T0*)C,a1);
  3310. R=((T0*)n);
  3311. }
  3312. }
  3313. /*FI]*/
  3314. return R;
  3315. }
  3316.  
  3317.  
  3318. void r143with(T143* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
  3319. (/*SFN*/C->_target)=a1;
  3320. (/*SFN*/C->_feature_name)=a2;
  3321. (/*SFN*/C->_arguments)=a3;
  3322. (/*SFN*/C->_run_feature)=a4;
  3323. r143run_feature_match(C,a5);
  3324. }
  3325.  
  3326.  
  3327. void r143mapping_c_target(T143* C,T0* a1){
  3328. T0* _actual_type=NULL;
  3329. T6 _flag=0;
  3330. _flag=r325call_invariant_start(a1);
  3331. _actual_type=X52run_type(r143result_type(C));
  3332. /*[IF*/
  3333. if(X52is_reference(_actual_type)){
  3334. /*[IF*/
  3335. if(X52is_reference(a1)){
  3336. X52mapping_cast(a1);
  3337. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  3338. T3 b1=((T3)'\50');
  3339. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  3340. }/*]*/
  3341. /*]*/
  3342. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
  3343. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  3344. }/*]*/
  3345. /*]*/
  3346. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  3347. T3 b1=((T3)'\51');
  3348. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  3349. }/*]*/
  3350. /*]*/
  3351. }
  3352. else{
  3353. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
  3354. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  3355. }/*]*/
  3356. /*]*/
  3357. }
  3358. /*FI]*/
  3359. }
  3360. else{
  3361. /*[IF*/
  3362. if(X52is_reference(a1)){
  3363. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
  3364. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  3365. }/*]*/
  3366. /*]*/
  3367. }
  3368. else{
  3369. /*[IF*/
  3370. if(X52need_c_struct(a1)){
  3371. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  3372. T3 b1=((T3)'\46');
  3373. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  3374. }/*]*/
  3375. /*]*/
  3376. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  3377. T3 b1=((T3)'\50');
  3378. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  3379. }/*]*/
  3380. /*]*/
  3381. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
  3382. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  3383. }/*]*/
  3384. /*]*/
  3385. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  3386. T3 b1=((T3)'\51');
  3387. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  3388. }/*]*/
  3389. /*]*/
  3390. }
  3391. else{
  3392. /*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
  3393. r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
  3394. }/*]*/
  3395. /*]*/
  3396. }
  3397. /*FI]*/
  3398. }
  3399. /*FI]*/
  3400. }
  3401. /*FI]*/
  3402. /*[IF*/
  3403. if(_flag){
  3404. /*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
  3405. T3 b1=((T3)'\51');
  3406. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  3407. }/*]*/
  3408. /*]*/
  3409. }
  3410. /*FI]*/
  3411. }
  3412.  
  3413.  
  3414. void r143afd_check(T143* C){
  3415. T0* _running=NULL;
  3416. T0* _rc=NULL;
  3417. /*[IF*/
  3418. if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
  3419. _rc=X52run_class(X104result_type((/*RF2*/(C)->_target/*4*/)));
  3420. _running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
  3421. /*[IF*/
  3422. if((_running)==((void*)(NULL))){
  3423. }
  3424.  else if((r53count(((T53*)_running)))>(1)){
  3425. r351update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
  3426. }
  3427. /*FI]*/
  3428. }
  3429. /*FI]*/
  3430. X104afd_check((/*RF2*/(C)->_target/*4*/));
  3431. /*[IF*/
  3432. if((r143arg_count(C))>(0)){
  3433. /*SSPRF3*//*X139afd_check*/r139afd_check((T139*)((/*RF2*/(C)->_arguments/*12*/)));
  3434. }
  3435. /*FI]*/
  3436. }
  3437.  
  3438.  
  3439. void r143c_declare_for_old(T143* C){
  3440. X104c_declare_for_old((/*RF2*/(C)->_target/*4*/));
  3441. /*[IF*/
  3442. if((r143arg_count(C))>(0)){
  3443. /*SSPRF3*//*X139c_declare_for_old*/r139c_declare_for_old((T139*)((/*RF2*/(C)->_arguments/*12*/)));
  3444. }
  3445. /*FI]*/
  3446. }
  3447.  
  3448.  
  3449. void r143collect_c_tmp(T143* C){
  3450. /*[IF*/
  3451. if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
  3452. X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
  3453. }
  3454. /*FI]*/
  3455. X104collect_c_tmp((/*RF2*/(C)->_target/*4*/));
  3456. /*[IF*/
  3457. if(((/*RF2*/(C)->_arguments/*12*/))!=((void*)(NULL))){
  3458. /*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp((T139*)((/*RF2*/(C)->_arguments/*12*/)));
  3459. }
  3460. /*FI]*/
  3461. }
  3462.  
  3463.  
  3464. T6 r143use_current(T143* C){
  3465. T6 R=0;
  3466. /*[IF*/
  3467. if((r143arg_count(C))>(0)){
  3468. R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)((/*RF2*/(C)->_arguments/*12*/)));
  3469. }
  3470. /*FI]*/
  3471. /*[IF*/
  3472. if(R){
  3473. }
  3474.  else if(X104is_current((/*RF2*/(C)->_target/*4*/))){
  3475. R=X334use_current((/*RF2*/(C)->_run_feature/*16*/));
  3476. }
  3477. else{
  3478. R=X104use_current((/*RF2*/(C)->_target/*4*/));
  3479. }
  3480. /*FI]*/
  3481. return R;
  3482. }
  3483.  
  3484.  
  3485. T0* r143runnable_args(T0* a1,T0* a2){
  3486. T0* R=NULL;
  3487. R=X139to_runnable(a1,a2);
  3488. /*[IF*/
  3489. if((R)==((void*)(NULL))){
  3490. {T68 se_tmp0;
  3491. r66add_position((*(se_tmp0=X139start_position(a1),&se_tmp0)));
  3492. }
  3493. r143fatal_error(((T0*)ms14_12870));
  3494. }
  3495. /*FI]*/
  3496. return R;
  3497. }
  3498.  
  3499.  
  3500. T0* r143to_runnable(T143* C,T0* a1){
  3501. T0* R=NULL;
  3502. T0* _rf=NULL;
  3503. T0* _a=NULL;
  3504. T0* _t=NULL;
  3505. _t=r143runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
  3506. _a=r143runnable_args((/*RF2*/(C)->_arguments/*12*/),a1);
  3507. _rf=r143run_feature_for(C,_t,a1);
  3508. /*[IF*/
  3509. if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
  3510. (/*SFN*/C->_target)=_t;
  3511. (/*SFN*/C->_arguments)=_a;
  3512. (/*SFN*/C->_run_feature)=_rf;
  3513. r143run_feature_match(C,a1);
  3514. R=((T0*)(C));
  3515. }
  3516.  else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*12*/))))){
  3517. R=((T0*)(C));
  3518. }
  3519. else{
  3520. {T143*n=((T143*)malloc(sizeof(*n))/*20*/);
  3521. *n=M143;
  3522. r143with(n,_t,(/*RF2*/(C)->_feature_name/*8*/),_a,_rf,a1);
  3523. R=((T0*)n);
  3524. }
  3525. }
  3526. /*FI]*/
  3527. return R;
  3528. }
  3529.  
  3530.  
  3531. T2 r143to_integer(T143* C){
  3532. T2 R=0;
  3533. {T68 se_tmp0;
  3534. r143error((*(se_tmp0=r143start_position(C),&se_tmp0)),((T0*)ms14_45441));
  3535. }
  3536. return R;
  3537. }
  3538.  
  3539.  
  3540. T6 r143is_static(T143* C){
  3541. T6 R=0;
  3542. T0* _rf=NULL;
  3543. T0* _running=NULL;
  3544. _running=(/*RF2*/((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)))))->_running/*9*/);
  3545. /*[IF*/
  3546. if(((_running)!=((void*)(NULL)))&&((r53count(((T53*)_running)))==(1))){
  3547. _rf=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/(((T53*)_running))->_storage/*0*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
  3548. /*[IF*/
  3549. if(X334is_static(_rf)){
  3550. R=1;
  3551. }
  3552. /*FI]*/
  3553. }
  3554. /*FI]*/
  3555. return R;
  3556. }
  3557.  
  3558.  
  3559. void r143finalize(T143* C){
  3560. T0* _rf=NULL;
  3561. T0* _rc=NULL;
  3562. _rf=(/*RF2*/(C)->_run_feature/*16*/);
  3563. _rc=X52run_class(/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)_rf))->_current_type/*8*/));
  3564. (/*SFN*/C->_run_feature)=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/)))->_storage/*0*/))[0]/*)*/),_rf);
  3565. }
  3566.  
  3567.  
  3568. void r143error(T68 a1,T0* a2){
  3569. r66add_position(a1);
  3570. /*[IRF3.6append*/{T0* b1=a2;
  3571. r7append((T7*)(oBC66explanation),b1);
  3572. }/*]*/
  3573. r66print_as_error((T66*)(oBC13eh));
  3574. }
  3575.  
  3576.  
  3577. T0* r143result_type(T143* C){
  3578. T0* R=NULL;
  3579. T0* _e=NULL;
  3580. T0* _tla=NULL;
  3581. R=X334result_type((/*RF2*/(C)->_run_feature/*16*/));
  3582. /*[IF*/
  3583. if(X52is_like_current(R)){
  3584. R=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
  3585. }
  3586. else{
  3587. _tla=R;
  3588. if(NULL!=(_tla)){
  3589. switch(((T0*)_tla)->id){
  3590. case 257:
  3591. break;
  3592. default:
  3593. _tla=NULL;
  3594. }
  3595. }/*[IF*/
  3596. if((_tla)!=((void*)(NULL))){
  3597. _e=/*SSFRF4*//*X139expression*/r139expression((T139*)((/*RF2*/(C)->_arguments/*12*/)),/*(IRF4.6rank*/(/*RF2*/(((T179*)((/*RF2*/(((T257*)_tla))->_like_what/*12*/))))->_rank/*12*/)/*)*/);
  3598. R=X52run_type(X104result_type(_e));
  3599. }
  3600. /*FI]*/
  3601. }
  3602. /*FI]*/
  3603. return R;
  3604. }
  3605.  
  3606.  
  3607. T6 r143call_proc_call_stupid_switch(T143* C,T0* a1){
  3608. T6 R=0;
  3609. /*[IF*/
  3610. if(((/*RF2*/(C)->_arguments/*12*/))==((void*)(NULL))){
  3611. R=1;
  3612. }
  3613. else{
  3614. R=/*SSFRF4*//*X139stupid_switch*/r139stupid_switch((T139*)((/*RF2*/(C)->_arguments/*12*/)),a1);
  3615. }
  3616. /*FI]*/
  3617. /*[IF*/
  3618. if(R){
  3619. /*[IF*/
  3620. if(X104is_current((/*RF2*/(C)->_target/*4*/))){
  3621. /*[IF*/
  3622. if(r49same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
  3623. R=(X334stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
  3624. }
  3625. else{
  3626. R=0;
  3627. }
  3628. /*FI]*/
  3629. }
  3630. else{
  3631. R=X104stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
  3632. }
  3633. /*FI]*/
  3634. }
  3635. /*FI]*/
  3636. return R;
  3637. }
  3638.  
  3639.  
  3640. T0* r143run_feature_for(T143* C,T0* a1,T0* a2){
  3641. T0* R=NULL;
  3642. T0* _bc=NULL;
  3643. T0* _rt=NULL;
  3644. T0* _rc=NULL;
  3645. _rt=X104result_type(a1);
  3646. /*[IF*/
  3647. if((_rt)!=((void*)(NULL))){
  3648. _rc=X52run_class(_rt);
  3649. /*[IF*/
  3650. if((_rc)!=((void*)(NULL))){
  3651. _bc=r50base_class(((T50*)_rc));
  3652. R=r51run_feature_for(((T51*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*8*/),a2);
  3653. }
  3654. /*FI]*/
  3655. }
  3656. /*FI]*/
  3657. /*[IF*/
  3658. if((R)==((void*)(NULL))){
  3659. {T68 se_tmp0;
  3660. r66add_position((*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
  3661. }
  3662. /*[IRF3.6append*/{T0* b1=((T0*)ms116_39025);
  3663. r7append((T7*)(oBC66explanation),b1);
  3664. }/*]*/
  3665. r66print_as_fatal_error((T66*)(oBC13eh));
  3666. }
  3667. /*FI]*/
  3668. return R;
  3669. }
  3670.  
  3671.  
  3672. T0* r143static_result_base_class(T143* C){
  3673. T0* R=NULL;
  3674. T0* _cn=NULL;
  3675. T0* _rt=NULL;
  3676. T0* _e_feature=NULL;
  3677. T0* _bc=NULL;
  3678. _bc=X104static_result_base_class((/*RF2*/(C)->_target/*4*/));
  3679. /*[IF*/
  3680. if((_bc)!=((void*)(NULL))){
  3681. _e_feature=r51e_feature(((T51*)_bc),(/*RF2*/(C)->_feature_name/*8*/));
  3682. /*[IF*/
  3683. if((_e_feature)!=((void*)(NULL))){
  3684. _rt=X90result_type(_e_feature);
  3685. /*[IF*/
  3686. if((_rt)!=((void*)(NULL))){
  3687. _cn=X52static_base_class_name(_rt);
  3688. /*[IF*/
  3689. if((_cn)!=((void*)(NULL))){
  3690. R=r61base_class(((T61*)_cn));
  3691. }
  3692. /*FI]*/
  3693. }
  3694. /*FI]*/
  3695. }
  3696. /*FI]*/
  3697. }
  3698. /*FI]*/
  3699. return R;
  3700. }
  3701.  
  3702.  
  3703. void r143make(T143* C,T0* a1,T0* a2,T0* a3){
  3704. (/*SFN*/C->_target)=a1;
  3705. (/*SFN*/C->_feature_name)=a2;
  3706. (/*SFN*/C->_arguments)=a3;
  3707. }
  3708.  
  3709.  
  3710. void r143fatal_error(T0* a1){
  3711. /*[IRF3.6append*/{T0* b1=a1;
  3712. r7append((T7*)(oBC66explanation),b1);
  3713. }/*]*/
  3714. r66print_as_fatal_error((T66*)(oBC13eh));
  3715. }
  3716.  
  3717.  
  3718. void r143assertion_check(T143* C,T3 a1){
  3719. /*[IF*/
  3720. if((a1)==(((T3)'R'))){
  3721. {T68 se_tmp0;
  3722. X334vape_check_from((/*RF2*/(C)->_run_feature/*16*/),(*(se_tmp0=r143start_position(C),&se_tmp0)));
  3723. }
  3724. }
  3725. /*FI]*/
  3726. X104assertion_check((/*RF2*/(C)->_target/*4*/),a1);
  3727. /*SSPRF3*//*X139assertion_check*/r139assertion_check((T139*)((/*RF2*/(C)->_arguments/*12*/)),a1);
  3728. }
  3729.  
  3730.  
  3731. T2 r143arg_count(T143* C){
  3732. T2 R=0;
  3733. R=/*SSFRF4*//*X139count*/r139count((T139*)((/*RF2*/(C)->_arguments/*12*/)));
  3734. return R;
  3735. }
  3736.  
  3737.  
  3738. T6 r143stupid_switch(T143* C,T0* a1){
  3739. T6 R=0;
  3740. R=r143call_proc_call_stupid_switch(C,a1);
  3741. /*[IF*/
  3742. if(R){
  3743. R=!(X52is_native_array(r143result_type(C)));
  3744. }
  3745. /*FI]*/
  3746. return R;
  3747. }
  3748.  
  3749.  
  3750. T68 r143start_position(T143* C){
  3751. T68 R={NULL,0};
  3752. {T68 se_tmp0;
  3753. R=(*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0));
  3754. }
  3755. return R;
  3756. }
  3757.  
  3758.  
  3759. void r278make(T278* C,T0* a1,T0* a2){
  3760. (/*SFN*/C->_name)=a1;
  3761. (/*SFN*/C->_constraint)=a2;
  3762. }
  3763.  
  3764.  
  3765. void r278fatal_error(T0* a1){
  3766. /*[IRF3.6append*/{T0* b1=a1;
  3767. r7append((T7*)(oBC66explanation),b1);
  3768. }/*]*/
  3769. r66print_as_fatal_error((T66*)(oBC13eh));
  3770. }
  3771.  
  3772.  
  3773. void r278check_generic_formal_arguments(T278* C){
  3774. /*[IF*/
  3775. if(r49is_used((/*RF2*/((T61*)((/*RF2*/(C)->_name/*0*/)))->_to_string/*8*/))){
  3776. r66add_position((/*RF2*/((T61*)((/*RF2*/(C)->_name/*0*/)))->_start_position/*0*/));
  3777. r278fatal_error(((T0*)ms278_305382));
  3778. }
  3779. /*FI]*/
  3780. }
  3781.  
  3782.  
  3783. void r232add_when_item_2(T232* C,T0* a1){
  3784. T2 _i=0;
  3785. T2 _u=0;
  3786. T2 _l=0;
  3787. _l=(/*RF2*/(((T240*)a1))->_lower_value/*16*/);
  3788. _u=(/*RF2*/(((T240*)a1))->_upper_value/*20*/);
  3789. /*[IF*/
  3790. if((_l)>=(_u)){
  3791. {T68 se_tmp0;
  3792. r232error((*(se_tmp0=r240start_position(((T240*)a1)),&se_tmp0)),((T0*)ms232_20672));
  3793. }
  3794. }
  3795. /*FI]*/
  3796. /*[IF*/
  3797. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  3798. _i=_l;
  3799. while (!((_i)>(_u)))
  3800. {
  3801. /*[IF*/
  3802. if(/*(IRF4.6includes*/r233includes_integer(((T233*)((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_when_list/*16*/))),_i)/*)*/){
  3803. {T68 se_tmp0;
  3804. r232err_occ(C,_i,(*(se_tmp0=r240start_position(((T240*)a1)),&se_tmp0)));
  3805. }
  3806. _i=(_u)+(1);
  3807. }
  3808. else{
  3809. _i=(_i)+(1);
  3810. }
  3811. /*FI]*/
  3812. }
  3813. }
  3814. /*FI]*/
  3815. /*[IF*/
  3816. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  3817. /*[IF*/
  3818. if(((/*RF2*/(C)->_values/*24*/))==((void*)(NULL))){
  3819. {T374*n=((T374*)malloc(sizeof(*n))/*16*/);
  3820. *n=M374;
  3821. r374make(n,_l,_u);
  3822. (/*SFN*/C->_values)=((T0*)n);
  3823. }
  3824. /*[IRF3.6set_all_with*/{T374* C1=(T374*)((/*RF2*/(C)->_values/*24*/));
  3825. T6 b1=1;
  3826. r375set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,((/*RF2*/(C1)->_upper/*8*/))-((/*RF2*/(C1)->_lower/*12*/)));
  3827. }/*]*/
  3828. }
  3829. else{
  3830. r374force((T374*)((/*RF2*/(C)->_values/*24*/)),1,_l);
  3831. r374force((T374*)((/*RF2*/(C)->_values/*24*/)),1,_u);
  3832. r374set_slice_with((T374*)((/*RF2*/(C)->_values/*24*/)),1,_l,_u);
  3833. }
  3834. /*FI]*/
  3835. }
  3836. /*FI]*/
  3837. }
  3838.  
  3839.  
  3840. void r232add_value(T232* C,T0* a1){
  3841. T0* _element=NULL;
  3842. {T239*n=((T239*)malloc(sizeof(*n))/*16*/);
  3843. *n=M239;
  3844. /*[IRF3.3make*/((((T239*)(n)))->_expression)=(a1);
  3845. /*]*/
  3846. _element=((T0*)n);
  3847. }
  3848. /*[IF*/
  3849. if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
  3850. {T237*n=((T237*)malloc(sizeof(*n))/*16*/);
  3851. *n=M237;
  3852. r237with_capacity(n,4,1);
  3853. (/*SFN*/C->_list)=((T0*)n);
  3854. }
  3855. }
  3856. /*FI]*/
  3857. r237add_last((T237*)((/*RF2*/(C)->_list/*8*/)),_element);
  3858. }
  3859.  
  3860.  
  3861. T0* r232to_runnable_integer(T232* C,T0* a1){
  3862. T0* R=NULL;
  3863. T0* _when_item=NULL;
  3864. T2 _i=0;
  3865. T2 _ne=0;
  3866. T0* _ct=NULL;
  3867. /*[IF*/
  3868. if(((/*RF2*/(C)->_when_list/*20*/))==((void*)(NULL))){
  3869. _ne=/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/;
  3870. (/*SFN*/C->_when_list)=a1;
  3871. /*[IF*/
  3872. if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
  3873. r66add_position((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_start_position/*4*/));
  3874. r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_53969));
  3875. }
  3876. else{
  3877. _i=(/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_lower/*12*/);
  3878. while (!(((_i)>((/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/)))||(((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)-(_ne))>(0))))
  3879. {
  3880. _when_item=X236to_runnable_integer(r237item((T237*)((/*RF2*/(C)->_list/*8*/)),_i),(T0*)C);
  3881. /*[IF*/
  3882. if((_when_item)==((void*)(NULL))){
  3883. r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_18400));
  3884. }
  3885. else{
  3886. /*[IRF3.6put*/{T237* C1=(T237*)((/*RF2*/(C)->_list/*8*/));
  3887. T0* b1=_when_item;
  3888. T2 b2=_i;
  3889. ((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
  3890. }/*]*/
  3891. }
  3892. /*FI]*/
  3893. _i=(_i)+(1);
  3894. }
  3895. }
  3896. /*FI]*/
  3897. /*[IF*/
  3898. if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
  3899. _ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
  3900. (/*SFN*/C->_compound)=r215to_runnable((T215*)((/*RF2*/(C)->_compound/*16*/)),_ct);
  3901. /*[IF*/
  3902. if(((/*RF2*/(C)->_compound/*16*/))==((void*)(NULL))){
  3903. r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_18400));
  3904. }
  3905. /*FI]*/
  3906. }
  3907. /*FI]*/
  3908. R=((T0*)(C));
  3909. }
  3910. else{
  3911. {T232*n=((T232*)malloc(sizeof(*n))/*28*/);
  3912. *n=M232;
  3913. r232from_e_when(n,(T0*)C);
  3914. R=((T0*)n);
  3915. }
  3916. R=r232to_runnable_integer(((T232*)R),a1);
  3917. }
  3918. /*FI]*/
  3919. return R;
  3920. }
  3921.  
  3922.  
  3923. void r232make(T232* C,T68 a1,T0* a2){
  3924. (/*SFN*/C->_start_position)=a1;
  3925. (/*SFN*/C->_header_comment)=a2;
  3926. }
  3927.  
  3928.  
  3929. void r232from_e_when(T232* C,T0* a1){
  3930. T0* _when_item=NULL;
  3931. T2 _i=0;
  3932. (/*SFN*/C->_start_position)=(/*RF2*/(((T232*)a1))->_start_position/*0*/);
  3933. (/*SFN*/C->_list)=r237twin((T237*)((/*RF2*/(((T232*)a1))->_list/*8*/)));
  3934. _i=(/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_lower/*12*/);
  3935. while (!((_i)>((/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/))))
  3936. {
  3937. _when_item=X236twin(r237item((T237*)((/*RF2*/(C)->_list/*8*/)),_i));
  3938. /*SSPRF3*//*X236clear_e_when*//*[IRF3.3clear_e_when*/((((T239*)(((T239*)_when_item))))->_e_when)=(NULL);
  3939. /*]*/
  3940. /*[IRF3.6put*/{T237* C1=(T237*)((/*RF2*/(C)->_list/*8*/));
  3941. T0* b1=_when_item;
  3942. T2 b2=_i;
  3943. ((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
  3944. }/*]*/
  3945. _i=(_i)+(1);
  3946. }
  3947. (/*SFN*/C->_header_comment)=(/*RF2*/(((T232*)a1))->_header_comment/*12*/);
  3948. (/*SFN*/C->_compound)=(/*RF2*/(((T232*)a1))->_compound/*16*/);
  3949. }
  3950.  
  3951.  
  3952. void r232compile_to_c(T232* C){
  3953. T2 _bs=0;
  3954. T2 _bi=0;
  3955. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_1028));
  3956. /*]*/
  3957. _bi=(/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_lower/*12*/);
  3958. while (!((_bi)>((/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_upper/*8*/))))
  3959. {
  3960. _bs=(_bi)+(1);
  3961. while (!(((_bs)>((/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_upper/*8*/)))||(!(r374item((T374*)((/*RF2*/(C)->_values/*24*/)),_bs)))))
  3962. {
  3963. _bs=(_bs)+(1);
  3964. }
  3965. _bs=(_bs)-(1);
  3966. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  3967. T3 b1=((T3)'\50');
  3968. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  3969. }/*]*/
  3970. /*]*/
  3971. /*[IF*/
  3972. if((_bi)==(_bs)){
  3973. /*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),_bi);
  3974. /*]*/
  3975. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_244));
  3976. /*]*/
  3977. r325put_inspect((T325*)(oBC13cpp));
  3978. }
  3979. else{
  3980. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  3981. T3 b1=((T3)'\50');
  3982. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  3983. }/*]*/
  3984. /*]*/
  3985. /*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),_bi);
  3986. /*]*/
  3987. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_242a));
  3988. /*]*/
  3989. r325put_inspect((T325*)(oBC13cpp));
  3990. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_628));
  3991. /*]*/
  3992. r325put_inspect((T325*)(oBC13cpp));
  3993. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_242));
  3994. /*]*/
  3995. /*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),_bs);
  3996. /*]*/
  3997. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  3998. T3 b1=((T3)'\51');
  3999. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  4000. }/*]*/
  4001. /*]*/
  4002. }
  4003. /*FI]*/
  4004. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
  4005. T3 b1=((T3)'\51');
  4006. putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
  4007. }/*]*/
  4008. /*]*/
  4009. _bi=(_bs)+(1);
  4010. while (!(((_bi)>((/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_upper/*8*/)))||(r374item((T374*)((/*RF2*/(C)->_values/*24*/)),_bi))))
  4011. {
  4012. _bi=(_bi)+(1);
  4013. }
  4014. /*[IF*/
  4015. if((_bi)<=((/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_upper/*8*/))){
  4016. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_496));
  4017. /*]*/
  4018. }
  4019. /*FI]*/
  4020. }
  4021. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_522));
  4022. /*]*/
  4023. /*[IF*/
  4024. if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
  4025. r215compile_to_c((T215*)((/*RF2*/(C)->_compound/*16*/)));
  4026. }
  4027. /*FI]*/
  4028. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
  4029. /*]*/
  4030. }
  4031.  
  4032.  
  4033. void r232afd_check(T232* C){
  4034. /*[IF*/
  4035. if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
  4036. r215afd_check((T215*)((/*RF2*/(C)->_compound/*16*/)));
  4037. }
  4038. /*FI]*/
  4039. }
  4040.  
  4041.  
  4042. void r232err_occ(T232* C,T2 a1,T68 a2){
  4043. r66add_position((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_start_position/*4*/));
  4044. /*[IRF3.6append*/{T0* b1=((T0*)ms232_63376);
  4045. r7append((T7*)(oBC66explanation),b1);
  4046. }/*]*/
  4047. /*[IRF3.6append*/{T0* b1=r2to_string(a1);
  4048. r7append((T7*)(oBC66explanation),b1);
  4049. }/*]*/
  4050. r232error(a2,((T0*)ms232_29304));
  4051. }
  4052.  
  4053.  
  4054. T6 r232use_current(T232* C){
  4055. T6 R=0;
  4056. /*[IF*/
  4057. if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
  4058. R=r215use_current((T215*)((/*RF2*/(C)->_compound/*16*/)));
  4059. }
  4060. /*FI]*/
  4061. return R;
  4062. }
  4063.  
  4064.  
  4065. T6 r232stupid_switch(T232* C,T0* a1){
  4066. T6 R=0;
  4067. R=(((/*RF2*/(C)->_compound/*16*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_compound/*16*/)),a1));
  4068. return R;
  4069. }
  4070.  
  4071.  
  4072. T0* r232to_runnable_character(T232* C,T0* a1){
  4073. T0* R=NULL;
  4074. T0* _when_item=NULL;
  4075. T2 _i=0;
  4076. T2 _ne=0;
  4077. T0* _ct=NULL;
  4078. /*[IF*/
  4079. if(((/*RF2*/(C)->_when_list/*20*/))==((void*)(NULL))){
  4080. _ne=/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/;
  4081. (/*SFN*/C->_when_list)=a1;
  4082. /*[IF*/
  4083. if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
  4084. r66add_position((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_start_position/*4*/));
  4085. r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_53969));
  4086. }
  4087. else{
  4088. _i=(/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_lower/*12*/);
  4089. while (!(((_i)>((/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/)))||(((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)-(_ne))>(0))))
  4090. {
  4091. _when_item=X236to_runnable_character(r237item((T237*)((/*RF2*/(C)->_list/*8*/)),_i),(T0*)C);
  4092. /*[IF*/
  4093. if((_when_item)==((void*)(NULL))){
  4094. r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_18400));
  4095. }
  4096. else{
  4097. /*[IRF3.6put*/{T237* C1=(T237*)((/*RF2*/(C)->_list/*8*/));
  4098. T0* b1=_when_item;
  4099. T2 b2=_i;
  4100. ((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
  4101. }/*]*/
  4102. }
  4103. /*FI]*/
  4104. _i=(_i)+(1);
  4105. }
  4106. }
  4107. /*FI]*/
  4108. /*[IF*/
  4109. if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
  4110. _ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
  4111. (/*SFN*/C->_compound)=r215to_runnable((T215*)((/*RF2*/(C)->_compound/*16*/)),_ct);
  4112. /*[IF*/
  4113. if(((/*RF2*/(C)->_compound/*16*/))==((void*)(NULL))){
  4114. r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_18400));
  4115. }
  4116. /*FI]*/
  4117. }
  4118. /*FI]*/
  4119. R=((T0*)(C));
  4120. }
  4121. else{
  4122. {T232*n=((T232*)malloc(sizeof(*n))/*28*/);
  4123. *n=M232;
  4124. r232from_e_when(n,(T0*)C);
  4125. R=((T0*)n);
  4126. }
  4127. R=r232to_runnable_character(((T232*)R),a1);
  4128. }
  4129. /*FI]*/
  4130. return R;
  4131. }
  4132.  
  4133.  
  4134. void r232add_when_item_1(T232* C,T0* a1){
  4135. T2 _v=0;
  4136. _v=(/*RF2*/(((T239*)a1))->_expression_value/*12*/);
  4137. /*[IF*/
  4138. if(/*(IRF4.6includes*/r233includes_integer(((T233*)((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_when_list/*16*/))),_v)/*)*/){
  4139. {T68 se_tmp0;
  4140. r232err_occ(C,_v,(*(se_tmp0=r239start_position(((T239*)a1)),&se_tmp0)));
  4141. }
  4142. }
  4143.  else if(((/*RF2*/(C)->_values/*24*/))==((void*)(NULL))){
  4144. {T374*n=((T374*)malloc(sizeof(*n))/*16*/);
  4145. *n=M374;
  4146. r374make(n,_v,_v);
  4147. (/*SFN*/C->_values)=((T0*)n);
  4148. }
  4149. /*[IRF3.6put*/{T374* C1=(T374*)((/*RF2*/(C)->_values/*24*/));
  4150. T6 b1=1;
  4151. T2 b2=_v;
  4152. ((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
  4153. }/*]*/
  4154. }
  4155. else{
  4156. r374force((T374*)((/*RF2*/(C)->_values/*24*/)),1,_v);
  4157. }
  4158. /*FI]*/
  4159. }
  4160.  
  4161.  
  4162. void r232add_slice(T232* C,T0* a1,T0* a2){
  4163. T0* _element=NULL;
  4164. {T240*n=((T240*)malloc(sizeof(*n))/*24*/);
  4165. *n=M240;
  4166. r240make(n,a1,a2);
  4167. _element=((T0*)n);
  4168. }
  4169. /*[IF*/
  4170. if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
  4171. {T237*n=((T237*)malloc(sizeof(*n))/*16*/);
  4172. *n=M237;
  4173. r237with_capacity(n,4,1);
  4174. (/*SFN*/C->_list)=((T0*)n);
  4175. }
  4176. }
  4177. /*FI]*/
  4178. r237add_last((T237*)((/*RF2*/(C)->_list/*8*/)),_element);
  4179. }
  4180.  
  4181.  
  4182. T6 r232includes_integer(T232* C,T2 a1){
  4183. T6 R=0;
  4184. R=((((/*RF2*/(C)->_values/*24*/))!=((void*)(NULL)))&&(r374valid_index((T374*)((/*RF2*/(C)->_values/*24*/)),a1)))&&(r374item((T374*)((/*RF2*/(C)->_values/*24*/)),a1));
  4185. return R;
  4186. }
  4187.  
  4188.  
  4189. void r232error(T68 a1,T0* a2){
  4190. r66add_position(a1);
  4191. /*[IRF3.6append*/{T0* b1=a2;
  4192. r7append((T7*)(oBC66explanation),b1);
  4193. }/*]*/
  4194. r66print_as_error((T66*)(oBC13eh));
  4195. }
  4196.  
  4197.  
  4198. void r243make(T243* C,T68 a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
  4199. (/*SFN*/C->_start_position)=a1;
  4200. (/*SFN*/C->_initialize)=a2;
  4201. (/*SFN*/C->_invariant_clause)=a3;
  4202. (/*SFN*/C->_variant_clause)=a4;
  4203. (/*SFN*/C->_until_expression)=a5;
  4204. (/*SFN*/C->_loop_body)=a6;
  4205. }
  4206.  
  4207.  
  4208. T0* r243add_comment(T243* C,T0* a1){
  4209. T0* R=NULL;
  4210. /*[IF*/
  4211. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
  4212. R=((T0*)(C));
  4213. }
  4214.  else {/*AT*//*[IF*/
  4215. if((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(1)){
  4216. R=((T0*)(C));
  4217. }
  4218. else{
  4219. {T224*n=((T224*)malloc(sizeof(*n))/*12*/);
  4220. *n=M224;
  4221. r224make(n,(T0*)C,a1);
  4222. R=((T0*)n);
  4223. }
  4224. }
  4225. /*FI]*/
  4226. }
  4227. /*FI]*/
  4228. return R;
  4229. }
  4230.  
  4231.  
  4232. void r243compile_to_c(T243* C){
  4233. T6 _invariant_flag=0;
  4234. T6 _variant_flag=0;
  4235. T6 _loop_check=0;
  4236. T6 _need_se_tmp=0;
  4237. _loop_check=r47loop_check((T47*)(oBC13run_control));
  4238. /*[IF*/
  4239. if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
  4240. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms243_11988));
  4241. /*]*/
  4242. _variant_flag=1;
  4243. }
  4244. /*FI]*/
  4245. /*[IF*/
  4246. if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
  4247. r215compile_to_c((T215*)((/*RF2*/(C)->_initialize/*12*/)));
  4248. }
  4249. /*FI]*/
  4250. /*[IF*/
  4251. if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
  4252. r242compile_to_c((T242*)((/*RF2*/(C)->_invariant_clause/*16*/)));
  4253. _invariant_flag=1;
  4254. }
  4255. /*FI]*/
  4256. X104collect_c_tmp((/*RF2*/(C)->_until_expression/*24*/));
  4257. _need_se_tmp=r325se_tmp_open_declaration((T325*)(oBC13cpp));
  4258. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms243_8073));
  4259. /*]*/
  4260. /*[IF*/
  4261. if(r47no_check((T47*)(oBC13run_control))){
  4262. r325trace_boolean_expression((T325*)(oBC13cpp),(/*RF2*/(C)->_until_expression/*24*/));
  4263. }
  4264. else{
  4265. X104compile_to_c((/*RF2*/(C)->_until_expression/*24*/));
  4266. }
  4267. /*FI]*/
  4268. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms243_1125));
  4269. /*]*/
  4270. /*[IF*/
  4271. if(_variant_flag){
  4272. r325variant_check((T325*)(oBC13cpp),/*SSWARF2*//*X241expression*/(/*RF2*/((T244*)((/*RF2*/(C)->_variant_clause/*20*/)))->_expression/*8*/));
  4273. }
  4274. /*FI]*/
  4275. /*[IF*/
  4276. if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
  4277. r215compile_to_c((T215*)((/*RF2*/(C)->_loop_body/*28*/)));
  4278. }
  4279. /*FI]*/
  4280. /*[IF*/
  4281. if(_invariant_flag){
  4282. r242compile_to_c((T242*)((/*RF2*/(C)->_invariant_clause/*16*/)));
  4283. }
  4284. /*FI]*/
  4285. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms243_270));
  4286. /*]*/
  4287. /*[IF*/
  4288. if(_need_se_tmp){
  4289. r325se_tmp_close_declaration((T325*)(oBC13cpp));
  4290. }
  4291. /*FI]*/
  4292. /*[IF*/
  4293. if(_variant_flag){
  4294. /*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
  4295. /*]*/
  4296. }
  4297. /*FI]*/
  4298. }
  4299.  
  4300.  
  4301. void r243afd_check(T243* C){
  4302. /*[IF*/
  4303. if(r47loop_check((T47*)(oBC13run_control))){
  4304. /*[IF*/
  4305. if(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL))){
  4306. /*SSPRF3*//*X241afd_check*/r244afd_check((T244*)((/*RF2*/(C)->_variant_clause/*20*/)));
  4307. }
  4308. /*FI]*/
  4309. /*[IF*/
  4310. if(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL))){
  4311. r242afd_check((T242*)((/*RF2*/(C)->_invariant_clause/*16*/)));
  4312. }
  4313. /*FI]*/
  4314. }
  4315. /*FI]*/
  4316. /*[IF*/
  4317. if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
  4318. r215afd_check((T215*)((/*RF2*/(C)->_initialize/*12*/)));
  4319. }
  4320. /*FI]*/
  4321. X104afd_check((/*RF2*/(C)->_until_expression/*24*/));
  4322. /*[IF*/
  4323. if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
  4324. r215afd_check((T215*)((/*RF2*/(C)->_loop_body/*28*/)));
  4325. }
  4326. /*FI]*/
  4327. }
  4328.  
  4329.  
  4330. T6 r243use_current(T243* C){
  4331. T6 R=0;
  4332. T6 _loop_check=0;
  4333. _loop_check=r47loop_check((T47*)(oBC13run_control));
  4334. /*[IF*/
  4335. if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
  4336. R=(R)||(/*SSFRF4*//*X241use_current*/r244use_current((T244*)((/*RF2*/(C)->_variant_clause/*20*/))));
  4337. }
  4338. /*FI]*/
  4339. /*[IF*/
  4340. if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
  4341. R=(R)||(r215use_current((T215*)((/*RF2*/(C)->_initialize/*12*/))));
  4342. }
  4343. /*FI]*/
  4344. R=(R)||(X104use_current((/*RF2*/(C)->_until_expression/*24*/)));
  4345. /*[IF*/
  4346. if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
  4347. R=(R)||(r242use_current((T242*)((/*RF2*/(C)->_invariant_clause/*16*/))));
  4348. }
  4349. /*FI]*/
  4350. /*[IF*/
  4351. if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
  4352. R=(R)||(r215use_current((T215*)((/*RF2*/(C)->_loop_body/*28*/))));
  4353. }
  4354. /*FI]*/
  4355. return R;
  4356. }
  4357.  
  4358.  
  4359. T6 r243stupid_switch(T243* C,T0* a1){
  4360. T6 R=0;
  4361. R=(((((/*RF2*/(C)->_initialize/*12*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_initialize/*12*/)),a1)))&&(X104stupid_switch((/*RF2*/(C)->_until_expression/*24*/),a1)))&&((((/*RF2*/(C)->_loop_body/*28*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_loop_body/*28*/)),a1)));
  4362. return R;
  4363. }
  4364.  
  4365.  
  4366. T0* r243to_runnable(T243* C,T0* a1){
  4367. T0* R=NULL;
  4368. T6 _loop_check=0;
  4369. T0* _ue=NULL;
  4370. _loop_check=r47loop_check((T47*)(oBC13run_control));
  4371. /*[IF*/
  4372. if(((/*RF2*/(C)->_current_type/*32*/))==((void*)(NULL))){
  4373. (/*SFN*/C->_current_type)=a1;
  4374. /*[IF*/
  4375. if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
  4376. (/*SFN*/C->_initialize)=r215to_runnable((T215*)((/*RF2*/(C)->_initialize/*12*/)),a1);
  4377. /*[IF*/
  4378. if(((/*RF2*/(C)->_initialize/*12*/))==((void*)(NULL))){
  4379. r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_36096));
  4380. }
  4381. /*FI]*/
  4382. }
  4383. /*FI]*/
  4384. /*[IF*/
  4385. if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
  4386. (/*SFN*/C->_invariant_clause)=r242to_runnable((T242*)((/*RF2*/(C)->_invariant_clause/*16*/)),a1);
  4387. /*[IF*/
  4388. if(((/*RF2*/(C)->_invariant_clause/*16*/))==((void*)(NULL))){
  4389. r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_14616));
  4390. }
  4391. /*FI]*/
  4392. }
  4393. /*FI]*/
  4394. /*[IF*/
  4395. if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
  4396. (/*SFN*/C->_variant_clause)=X241to_runnable((/*RF2*/(C)->_variant_clause/*20*/),a1);
  4397. /*[IF*/
  4398. if(((/*RF2*/(C)->_variant_clause/*20*/))==((void*)(NULL))){
  4399. r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_41834));
  4400. }
  4401. /*FI]*/
  4402. }
  4403. /*FI]*/
  4404. _ue=X104to_runnable((/*RF2*/(C)->_until_expression/*24*/),a1);
  4405. /*[IF*/
  4406. if((_ue)!=((void*)(NULL))){
  4407. /*[IF*/
  4408. if(!(X52is_boolean(X104result_type(_ue)))){
  4409. {T68 se_tmp0;
  4410. r243error((*(se_tmp0=X104start_position(_ue),&se_tmp0)),((T0*)ms243_78192));
  4411. }
  4412. r66add_type(X104result_type(_ue),((T0*)ms14_18080));
  4413. r66print_as_error((T66*)(oBC13eh));
  4414. }
  4415. /*FI]*/
  4416. (/*SFN*/C->_until_expression)=_ue;
  4417. }
  4418. else{
  4419. r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_75456));
  4420. }
  4421. /*FI]*/
  4422. /*[IF*/
  4423. if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
  4424. (/*SFN*/C->_loop_body)=r215to_runnable((T215*)((/*RF2*/(C)->_loop_body/*28*/)),a1);
  4425. /*[IF*/
  4426. if(((/*RF2*/(C)->_loop_body/*28*/))==((void*)(NULL))){
  4427. r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_24012));
  4428. }
  4429. /*FI]*/
  4430. }
  4431. /*FI]*/
  4432. /*[IF*/
  4433. if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
  4434. R=((T0*)(C));
  4435. }
  4436. /*FI]*/
  4437. }
  4438. else{
  4439. {T243*n=((T243*)malloc(sizeof(*n))/*36*/);
  4440. *n=M243;
  4441. r243make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_initialize/*12*/),(/*RF2*/(C)->_invariant_clause/*16*/),(/*RF2*/(C)->_variant_clause/*20*/),(/*RF2*/(C)->_until_expression/*24*/),(/*RF2*/(C)->_loop_body/*28*/));
  4442. R=((T0*)n);
  4443. }
  4444. R=r243to_runnable(((T243*)R),a1);
  4445. }
  4446. /*FI]*/
  4447. return R;
  4448. }
  4449.  
  4450.  
  4451. void r243error(T68 a1,T0* a2){
  4452. r66add_position(a1);
  4453. /*[IRF3.6append*/{T0* b1=a2;
  4454. r7append((T7*)(oBC66explanation),b1);
  4455. }/*]*/
  4456. r66print_as_error((T66*)(oBC13eh));
  4457. }
  4458.  
  4459.  
  4460. T0* r58going_down(T58* C,T0* a1,T0* a2){
  4461. T0* R=NULL;
  4462. T0* _previous=NULL;
  4463. /*[IF*/
  4464. if(((/*RF2*/(C)->_rename_list/*12*/))==((void*)(NULL))){
  4465. R=a2;
  4466. }
  4467. else{
  4468. R=r85name_in_child((T85*)((/*RF2*/(C)->_rename_list/*12*/)),a2);
  4469. }
  4470. /*FI]*/
  4471. /*[IF*/
  4472. if(!(/*(IRF4.6is_empty*/((/*RF2*/(((T360*)a1))->_upper/*8*/))<(0)/*)*/)){
  4473. _previous=r360last(((T360*)a1));
  4474. r360remove_last(((T360*)a1));
  4475. R=r58going_down(((T58*)_previous),a1,R);
  4476. }
  4477. /*FI]*/
  4478. return R;
  4479. }
  4480.  
  4481.  
  4482. T0* r58runnable_type(T58* C,T0* a1){
  4483. T0* R=NULL;
  4484. /*[IF*/
  4485. if(X52is_generic((/*RF2*/(C)->_type/*4*/))){
  4486. R=X52to_runnable((/*RF2*/(C)->_type/*4*/),a1);
  4487. }
  4488. else{
  4489. R=(/*RF2*/(C)->_type/*4*/);
  4490. }
  4491. /*FI]*/
  4492. return R;
  4493. }
  4494.  
  4495.